根據日志繪制障礙物輪廓點和中心點

繪制log中的障礙物凸包點,首先給出log日志中的障礙物的凸包點

[Info]-[PointCloudHandle:88]:[2024-07-14,09:55:41.052]-back obj size 6
[Info]-[PointCloudHandle:92]:[2024-07-14,09:55:41.052]-back obj size 6 cur idx 1
[Info]-[PointCloudHandle:93]:[2024-07-14,09:55:41.052]-back obj center_x 9.247219 center_y -14.778276 center z:2.492869
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:8.02 y:-15.56,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:8.02 y:-14.04,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:9.96 y:-14.04,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:9.96 y:-15.56,
[Info]-[PointCloudHandle:92]:[2024-07-14,09:55:41.052]-back obj size 6 cur idx 2
[Info]-[PointCloudHandle:93]:[2024-07-14,09:55:41.052]-back obj center_x 8.240705 center_y -14.276690 center z:2.027562
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:8.05 y:-14.38,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:8.05 y:-14.19,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:8.43 y:-14.19,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:8.43 y:-14.38,
[Info]-[PointCloudHandle:92]:[2024-07-14,09:55:41.052]-back obj size 6 cur idx 3
[Info]-[PointCloudHandle:93]:[2024-07-14,09:55:41.052]-back obj center_x -1.659360 center_y -9.992173 center z:2.039360
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:9 x:-7.11 y:-0.68,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:9 x:-5.84 y:-0.23,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:9 x:-4.99 y:-1.12,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:9 x:7.44 y:-13.94,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:9 x:7.57 y:-15.43,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:9 x:6.11 y:-16.12,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:9 x:4.85 y:-16.36,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:9 x:-5.24 y:-14.37,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:9 x:-6.33 y:-13.56,
[Info]-[PointCloudHandle:92]:[2024-07-14,09:55:41.052]-back obj size 6 cur idx 4
[Info]-[PointCloudHandle:93]:[2024-07-14,09:55:41.052]-back obj center_x -16.760958 center_y -4.745333 center z:1.604066
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:8 x:-21.27 y:-5.08,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:8 x:-21.42 y:-4.62,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:8 x:-19.36 y:-2.77,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:8 x:-18.59 y:-2.75,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:8 x:-15.66 y:-3.99,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:8 x:-13.77 y:-4.58,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:8 x:-15.86 y:-7.12,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:8 x:-16.02 y:-7.95,
[Info]-[PointCloudHandle:92]:[2024-07-14,09:55:41.052]-back obj size 6 cur idx 5
[Info]-[PointCloudHandle:93]:[2024-07-14,09:55:41.052]-back obj center_x 7.400077 center_y -4.330252 center z:1.465278
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:6 x:5.70 y:-6.68,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:6 x:6.36 y:-0.28,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:6 x:8.30 y:-0.29,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:6 x:9.13 y:-8.90,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:6 x:8.72 y:-10.07,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:6 x:7.91 y:-9.27,
[Info]-[PointCloudHandle:92]:[2024-07-14,09:55:41.052]-back obj size 6 cur idx 6
[Info]-[PointCloudHandle:93]:[2024-07-14,09:55:41.052]-back obj center_x -7.823660 center_y -0.408213 center z:1.034263
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:-7.99 y:-0.49,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:-7.99 y:-0.32,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:-7.50 y:-0.32,
[Info]-[PointCloudHandle:98]:[2024-07-14,09:55:41.052]-obj_num:4 x:-7.50 y:-0.49,

其中代碼如下:

import re
import matplotlib.pyplot as plt# 假設日志文件名為 'log_file.txt'
log_file = 'log_file.txt'# 讀取日志文件內容
with open(log_file, 'r') as file:lines = file.readlines()# 解析日志文件內容
obstacles = []
current_obstacle = Nonefor line in lines:if 'cur idx' in line:if current_obstacle:obstacles.append(current_obstacle)current_obstacle = {'center': None, 'points': []}elif 'back obj center_x' in line:match = re.search(r'center_x (\S+) center_y (\S+)', line)if match:center_x, center_y = float(match.group(1)), float(match.group(2))current_obstacle['center'] = (center_x, center_y)elif 'obj_num' in line:match = re.search(r'x:(\S+) y:(\S+)', line)if match:point_x, point_y = match.group(1).replace(',', ''), match.group(2).replace(',', '')point_x, point_y = float(point_x), float(point_y)current_obstacle['points'].append((point_x, point_y))if current_obstacle:obstacles.append(current_obstacle)# 可視化障礙物
plt.figure(figsize=(10, 10))
for obs in obstacles:center = obs['center']points = obs['points']# 繪制中心點plt.scatter(center[0], center[1], color='red', s=100, label='Center' if obs == obstacles[0] else "")# 繪制輪廓點points_x = [p[0] for p in points]points_y = [p[1] for p in points]plt.scatter(points_x, points_y, color='blue', s=50, label='Contour Point' if obs == obstacles[0] else "")# 繪制輪廓線points_x.append(points_x[0])  # 閉合輪廓points_y.append(points_y[0])  # 閉合輪廓plt.plot(points_x, points_y, color='green', linewidth=2, label='Contour Line' if obs == obstacles[0] else "")plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.title('Obstacles Visualization')
plt.grid(True)
plt.show()

效果如下圖
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45619.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45619.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45619.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

極客筆記【收藏】

1. 鴻蒙調試命令(adb): OH HDC命令使用指南|極客筆記 2. 添加selinux 權限 Android 根據AVC報錯添加Selinux 權限|極客筆記

【面試題】Golang 鎖的相關問題(第七篇)

目錄 1.Mutex 幾種狀態 1. 鎖定狀態(Locked) 2. 未鎖定狀態(Unlocked) 3. 喚醒狀態(Woken) 4. 饑餓狀態(Starving) 5. 等待者計數(Waiters Count) 總結…

STM32+TMC2209控制步進電機正反轉。

STM32F103ZET6TMC2209控制步進電機正反轉 1. 步進電機介紹2 驅動器TMC2209介紹2.1 引腳圖及其功能2.2 細分介紹2.3 TMC控制驅動器接法 3 控制器介紹3.1 確定控制引腳3.2 UBEMX配置3.2.1 GPIO配置3.2.2 NVIC配置3.2.3 RCC配置3.2.4 SYS配置3.2.5 USRAT2配置(PS:沒用上…

單相電機或風扇接電容的具體接線方法示例

單相電機或風扇接電容的具體接線方法示例 如下圖所示,單相電機引出3根繞組線(不同品牌或型號的電機,引出線的顏色可能會有差異), 那么如何進行接線呢? 首先,跳過萬用表測量主、副繞組的阻值…

Unable to obtain driver using Selenium Manager: Selenium Manager failed解決方案

大家好,我是愛編程的喵喵。雙985碩士畢業,現擔任全棧工程師一職,熱衷于將數據思維應用到工作與生活中。從事機器學習以及相關的前后端開發工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現為CSDN博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

聊聊自動駕駛中的路徑和軌跡

在移動機器人領域,路徑(Path)和軌跡(Trajectory)是兩個緊密相關但又有所區別的概念。 路徑 是機器人從起點到終點的一系列點的序列,它只考慮了位置信息,而不考慮時間信息。路徑描述了機器人將要…

Java中常見的語法糖

文章目錄 概覽泛型增強for循環自動裝箱與拆箱字符串拼接枚舉類型可變參數內部類try-with-resourcesLambda表達式 概覽 語法糖是指編程語言中的一種語法結構,它們并不提供新的功能,而是為了讓代碼更易讀、更易寫而設計的。語法糖使得某些常見的編程模式或…

【Linux】Ubuntu 漏洞掃描與修復的吃癟經歷

自從上次“劫持”事情后,項目經理將所有跟安全相關的都推給我了(不算 KPI 又要被白嫖,煩死了)。這次客戶又提了一個服務器安全掃描和漏洞修復的“活”,我這邊順手將過程記錄一下,就當經驗總結跟各位分享一下…

centos7安裝配置maven

一、配置安裝環境 #安裝wget yum install -y wget #安裝jdk17 #創建jdk存放目錄 mkdir -p /usr/local/java #切換目錄 cd /usr/local/java #下載jdk17 wget https://download.java.net/java/GA/jdk17.0.1/2a2082e5a09d4267845be086888add4f/12/GPL/openjdk-17.0.1_linux-x64_b…

【Linux】多線程_7

文章目錄 九、多線程8. POSIX信號量根據信號量環形隊列的生產者消費者模型代碼結果演示 未完待續 九、多線程 8. POSIX信號量 POSIX信號量和SystemV信號量作用相同,都是用于同步操作,達到無沖突的訪問共享資源目的。 但POSIX可以用于線程間同步。 創建…

什么ISP?什么是IAP?

做單片機開發的工程師經常會聽到兩個詞:ISP和IAP,但新手往往對這兩個概念不是很清楚,今天就來和大家聊聊什么是ISP,什么是IAP? 一、ISP ISP的全稱是:In System Programming,即在系統編程&…

如何申請抖音本地生活服務商?3種方式優劣勢分析!

隨著多家互聯網大廠在本地生活板塊的布局力度不斷加大,以抖音為代表的頭部互聯網平臺的本地生活服務商成為了創業賽道中的大熱門,與抖音本地生活服務商怎么申請等相關的帖子,更是多次登頂創業者社群的話題榜單。 就目前的市場情況來看&#x…

Go語言--廣播式并發聊天服務器

實現功能 每個客戶端上線,服務端可以向其他客戶端廣播上線信息;發送的消息可以廣播給其他在線的客戶支持改名支持客戶端主動退出支持通過who查找當前在線的用戶超時退出 流程 變量 用戶結構體 保存用戶的管道,用戶名以及網絡地址信息 typ…

ARM功耗管理之功耗數據與功耗收益評估

安全之安全(security)博客目錄導讀 思考:功耗數據如何測試?功耗曲線?功耗收益評估? UPF的全稱是Unified Power Format,其作用是把功耗設計意圖(power intent)傳遞給EDA工具, 從而幫…

vscode OpenCV環境搭建

cmake 官網https://cmake.org/files/ 環境變量D:\Program Files\CMake\bin w64devkit 官網https://github.com/skeeto/w64devkit/tags 環境變量D:\Program Files\w64devkit\bin minGW32-make 拷貝并重命名為make OpenCV 在執行完后,把關于python的都給取消勾選…

mybatis-plus映射mysql的json類型的字段

一、對json里面內容建立實體類 Data AllArgsConstructor NoArgsConstructor public class RouteMetaEntity {private String title;private Boolean affix;private Boolean isAlwaysShow; }二、主類做映射 TableField(typeHandler JacksonTypeHandler.class)private RouteMe…

Codeforces Round 958 (Div. 2)補題

文章目錄 A題 (拆分多集)B題(獲得多數票)C題(固定 OR 的遞增序列) A題 (拆分多集) 本題在賽時卡的時間比較久,把這題想復雜了,導致WA了兩次。后來看明白之后就是將n每次轉換成k-1個1,到最后分不出來k-1個1直接一次就能…

Hive的基本操作(查詢)

1、基礎查詢 基本語法 select 字段列表|表達式|子查詢 from 表(子查詢|視圖|臨時表|普通表) where [not] 條件A and|or 條件B --先:面向原始行進行篩選 group by 字段A[,字段B,...] > 分組【去重處理】 having 聚合條件(非原始字段條件) --再&#x…

JMeter案例分享:通過數據驗證的錯誤,說說CSV數據文件設置中的線程共享模式

前言 用過JMeter參數化的小伙伴,想必對CSV Data Set Config非常熟悉。大家平時更關注變量名稱,是否忽略首行等參數,其余的一般都使用默認值。然而我最近遇到一個未按照我的預想讀取數據的案例,原因就出在最后一個參數“線程共享模…

深度學習中激活函數的演變與應用:一個綜述

摘要 本文全面回顧了深度學習中激活函數的發展歷程,從早期的Sigmoid和Tanh函數,到廣泛應用的ReLU系列,再到近期提出的Swish、Mish和GeLU等新型激活函數。深入分析了各類激活函數的數學表達、特點優勢、局限性以及在典型模型中的應用情況。通過系統的對比分析,本文探討了激…