自组装mid360便捷化bag包采集设备

一、问题一:电脑太重,换nuc

采集mid360数据的过程中,发现了头疼的问题,得一手拿着电脑,一手拿着mid360来采集,实在是累胳膊。因此,网购了一个intel nuc, 具体型号是12wshi5000华尔街峡谷nuc12i5厚版,买来之后,发现有点坑爹,windows系统下驱动啥都都挺全的,但是ubuntu下驱动貌似不全,1)有线网识别不了(也就是直接把mid360的网口数据线插到nuc上,识别不出来,差点导致我放弃了)。2)一直报opengl错误,也不知道该如何解决。

1.好在买了一个网口转usb的转换接口,插到电脑后发现可以采集数据了,但是opengl问题导致用./LivoxViewer.sh还是无法启动显示。考虑到只是采集数据,因此足够了。

2.其实换个jetson nano会不会更好,我感觉会更好,至少不用考虑opengl能不能用问题。另外jetson nano一般供电是5v,这样和屏幕供电是一样了。但是买完nuc已经是下了血本,无钱购买jetson nano了,算了,凑合用吧,争取发篇论文。

二、问题2:不可能在数据采集过程中把鼠标键盘全部带着

因此需要做一个 开机自启动软件,用QT来做,具体的代码如下:

mainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QPushButton>
#include <QMessageBox>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QWidget>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();public:QPushButton*  m_launchBtn;QPushButton*  m_recordBtn;QPushButton*  m_killRecordBtn;QWidget* m_widget;public slots:void launchBtn_clicked();void recordBtn_clicked();void killRecordBtn_clicked();
private:Ui::MainWindow *ui;
};#endif // MAINWINDOW_H

mainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);m_widget = new QWidget(this);this->setCentralWidget(m_widget);m_launchBtn = new  QPushButton(QString::fromUtf8("启动launch"),this);m_recordBtn = new  QPushButton(QString::fromUtf8("开始录包"),this);m_killRecordBtn = new  QPushButton("结束录包",this);//    m_launchBtn->setGeometry(200,200,100,50);
//    m_recordBtn->setGeometry(300,200,100,50);
//    m_killRecordBtn->setGeometry(400,200,100,50);//QVBoxLayout *pVLayout = new QVBoxLayout(this);pVLayout->addWidget(m_launchBtn);pVLayout->addWidget(m_recordBtn);pVLayout->addWidget(m_killRecordBtn);m_widget->setLayout(pVLayout);connect(m_launchBtn,SIGNAL(clicked()),this,SLOT(launchBtn_clicked()));connect(m_recordBtn,SIGNAL(clicked()),this,SLOT(recordBtn_clicked()));connect(m_killRecordBtn,SIGNAL(clicked()),this,SLOT(killRecordBtn_clicked()));
}MainWindow::~MainWindow()
{delete ui;
}void record_rosbag_btn()
{
//    std::string path = "./bag_name.bag";
//    std::string topics = " /top2record";
//    std::string node_name = " __name:=my_record_node";
//    std::string cmd_str = "gnome-terminal -x bash -c 'rosbag record -O " + path + topics + node_name + "'";
//    int ret = system(cmd_str.c_str()); // #include <stdlib.h>
}void kill_rosbag_record()
{
//#include <ros/ros.h>//ros::V_string v_nodes;
//ros::master::getNodes(v_nodes);//std::string node_name = std::string("/my_record_node");
//auto it = std::find(v_nodes.begin(), v_nodes.end(), node_name.c_str());
//if (it != v_nodes.end()){
//    std::string cmd_str = "rosnode kill " + node_name;
//    int ret = system(cmd_str.c_str());
//    std::cout << "## stop rosbag record cmd: " << cmd_str << std::endl;
//}}// 参考网站:https://blog.csdn.net/qq_25368751/article/details/102594811?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-102594811-blog-83106748.235^v43^pc_blog_bottom_relevance_base8&spm=1001.2101.3001.4242.1&utm_relevant_index=1
void MainWindow::launchBtn_clicked()
{QMessageBox::information(nullptr,"launch start","COntent",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);system("gnome-terminal -x bash -c 'source ~/ws_livox/devel/setup.bash; roslaunch livox_ros_driver2 msg_MID360.launch'&");return;
}void MainWindow::recordBtn_clicked()
{
//    QMessageBox::information(nullptr,"launch start","record",QMessageBox::Yes|QMessageBox::No,
//                              QMessageBox::Yes);//    std::string cmd_str = "gnome-terminal -x bash -c 'rosbag record -a'&";
//    system(cmd_str.c_str()); // #include <stdlib.h>return;
}void MainWindow::killRecordBtn_clicked()
{
//    QMessageBox::information(nullptr,"launch start","killRecord",QMessageBox::Yes|QMessageBox::No,
//                             QMessageBox::Yes);return;
}

界面长这样:

其中开始录包和结束录包没用。

直接点启动launch就可以。

三、需要做成开机自启动,否则意外断电后,再开机没有鼠标键盘也是个尴尬事情

主要参考:Ubuntu执行文件 开机自启动设置方法_乌班图自启动文件-CSDN博客

1.使用 cd 命令进入 /etc/xdg/autostart目录,可以看到里面有很多 .desktop文件

2.使用 cp 命令任意复制其中一个 .desktop文件至当前目录下,以便修改使用

sudo cp xx.decktop  qt_mid360.desktop

3.打开刚刚复制的文件,修改其中的内容:sudo gedit qt_mid360.desktop

                可以只保留下面四项:

                Name:执行程序的名字

                Exec:执行程序的路径+执行程序的名字

                Type和NoDisplay修改如下。

四、设置msg_MID360.launch自动录制包

找到 ws_livox/src/livox_ros_driver2/launch_ROS1中的 msg_MID360.launch文件,设置rosbag_enable为true,就可以同时启动数据采集和包录制了。

五、开机不要开机密码了,避免使用键盘

参考:Ubuntu取消开机密码自动登录_ubuntu如何取消密码登陆-CSDN博客

设置----详细信息----用户---在菜单栏中的【解锁】---输入密码---打开自动登录

六、组装设备

买一个支架可以支撑mid360,并且能够手握着。

买三块电池,nuc供电需要20v,需要买20v的电池。mid360需要供电9-27v可以用20v的电池。还有一个是要买一个触屏,手指头点击可以关闭终端。

再买个布包和一个背带绳子。

背着主机+电池,屏幕固定在mid360的支架上,qt程序开机自启动,启动后,点击launch开始,就可以开始采集数据了,然后手指点击关闭触屏中的终端,一个包包就录制完毕了。

凑合能用吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/37399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

何时使用查询字符串参数和路径参数_2024-06-28

REST API 已成为构建和使用 Web 服务的标准。在设计 REST API 时&#xff0c;一个重要方面是决定如何构造 URL 和参数。向 API 传递参数的两种常见方法是通过查询字符串参数和路径参数。本文将解释这两种方法之间的区别、何时使用每种方法&#xff0c;并提供示例来说明它们的用…

二刷算法训练营Day45 | 动态规划(7/17)

目录 详细布置&#xff1a; 1. 139. 单词拆分 2. 多重背包理论基础 3. 背包总结 3.1 背包递推公式 3.2 遍历顺序 01背包 完全背包 详细布置&#xff1a; 1. 139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单…

昇思25天学习打卡营第6天|linchenfengxue

​​​​​​SSD目标检测 SSD&#xff0c;全称Single Shot MultiBox Detector&#xff0c;是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上&#xff0c;SSD对于输入尺寸300x300的网络&#xff0c;达到74.3%mAP(mean Average Precision)以…

刷题Day37|416. 分割等和子集

416. 分割等和子集 题目&#xff1a;416. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;0-1背包问题&#xff0c;重量和价值一样&#xff0c;每个元素只能使用一次&#xff0c;装满背包且最大价值为sum/2就是true 。dp[target] target返回true。 …

nginx架构基本数据结构配置模块请求详解

nginx源码的目录结构&#xff1a; . ├── auto 自动检测系统环境以及编译相关的脚本 │ ├── cc 关于编译器相关的编译选项的检测脚本 │ ├── lib nginx编译所需要的一些库的检测脚本 │ ├── os 与平台相关的一些系统参…

端口扫描攻击检测及防御方案

端口扫描数据一旦落入坏人之手&#xff0c;可能会成为更大规模恶意活动的一部分。因此&#xff0c;了解如何检测和防御端口扫描攻击至关重要。 端口扫描用于确定网络上的端口是否开放以接收来自其他设备的数据包&#xff0c;这有助于网络安全团队加强防御。但恶意行为者也可以…

ubuntu 18 虚拟机安装(5) postgres sql 数据库 简单 应用

ubuntu 18 虚拟机安装&#xff08;5&#xff09; postgres sql 数据库 简单 应用 参考 PostgreSQL的基本使用整理 https://blog.csdn.net/qq_45658339/article/details/124431612 sudo su - postgres psqlsudo -u postgres psqlsudo systemctl status postgresql sudo syste…

50-1 内网渗透 - 未引用的服务路径提权

一、未引用的服务路径介绍 未引用的服务路径(Unquoted Service Path)漏洞利用了Windows文件路径解析的特性。当服务启动时,如果其执行文件路径中包含空格并且未包含在引号中,就可能导致此漏洞的发生。 具体来说,如果完整路径中包含空格且未使用引号括起来,Windows将按顺…

zabbix-server的搭建

zabbix-server的搭建 部署 zabbix 服务端(192.168.99.180) rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm cd /etc/yum.repos.d sed -i s#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix# zabbix.r…

实验八 T_SQL编程

题目 以电子商务系统数据库ecommerce为例 1、在ecommerce数据库&#xff0c;针对会员表member首先创建一个“呼和浩特地区”会员的视图view_hohhot&#xff0c;然后通过该视图查询来自“呼和浩特”地区的会员信息&#xff0c;用批处理命令语句将问题进行分割&#xff0c;并分…

【方案+源码】srm供应商招投标管理系统建设方案及源码实现

SRM供应商管理系统功能建设涵盖&#xff1a; 供应商管理&#xff1a;整合供应商信息&#xff0c;实现全生命周期管理。 采购需求管理&#xff1a;精准把握采购需求&#xff0c;优化采购计划。 采购寻源管理&#xff1a;智能寻源&#xff0c;匹配最佳供应商。 采购合同管理&…

TypeScript中的Omit和Pick

最近面试中被问到了TypeScript中的Omit和Pick。第一时间就是尬住了&#xff0c;因为在工作里很少使用了TS&#xff0c;基本都是在写类型。这俩关键词&#xff0c;有点不面熟。面试结束后也是了解了一下&#xff0c;挺简单的两个类型工具。 在 TypeScript 中&#xff0c;Omit 和…

spring和springboot的关系是什么?

大家好&#xff0c;我是网创有方的站长&#xff0c;今天给大家分享下spring和springboot的关系是什么&#xff1f; Spring和Spring Boot之间的关系可以归纳为以下几个方面&#xff1a; 技术基础和核心特性&#xff1a; Spring&#xff1a;是一个广泛应用的开源Java框架&#…

【深度学习基础】`view` 和 `reshape` 的参数详解

目录 基本概念参数详解 示例view 和 reshape 在具体应用中的参数解释参数解释 更多示例高维张量示例非连续内存示例 总结 基本概念 view 和 reshape 都用于调整张量的形状&#xff0c;它们的参数是新的形状&#xff0c;每个维度的大小可以指定为具体的数值或者 -1。-1 表示这个…

计算机类主题会议推荐之——AIIIP 2024

【ACM出版 |IEEE&ACM院士、CCF杰出会员担任组委| 往届会后4个月检索 】 第三届人工智能与智能信息处理国际学术会议&#xff08;AIIIP 2024&#xff09; 2024 3rd International Conference on Artificial Intelligence and Intelligent Information Processing 中国-天…

uniapp部署服务器,uniapp打包H5部署服务器,uniapp将config.js抽离

目录 步骤一.在static文件夹下新建config.js文件 config.js文件说明 在config.js中放入使用的请求的接口地址,资源路径等 congfig.js中的变量在页面中如何使用 步骤二.manifest.json配置 1.在项目根目录(与app.vue同级)创建template.h5.html文件 2.在manifest.json配置刚刚创…

全面体验ONLYOFFICE 8.1版本桌面编辑器

ONLYOFFICE官网 在当今的数字化办公环境中&#xff0c;选择合适的文档处理工具对于提升工作效率和团队协作至关重要。ONLYOFFICE 8.1版本桌面编辑器&#xff0c;作为一款集成了多项先进功能的办公软件&#xff0c;为用户提供了全新的办公体验。今天&#xff0c;我们将深入探索…

深入探索STM32的SPI功能:W25Q64 Flash存储器全攻略

摘要 随着嵌入式系统对存储需求的增长&#xff0c;选择合适的存储设备变得尤为重要。W25Q64 Flash存储器以其8Mbit的存储容量和SPI接口的便捷性&#xff0c;成为STM32微控制器项目中的优选存储方案。本文将深入探索STM32的SPI功能&#xff0c;提供W25Q64 Flash存储器的全面集成…

如何成为-10x工程师:反向教学大数据开发实际工作中应如何做

10x 工程师可能是神话&#xff0c;但 -10x 工程师确实存在。要成为 -10x 工程师&#xff0c;只需每周浪费 400 小时的工程时间。结合以下策略&#xff1a; 目录 如何使 10 名工程师的输出无效化改变需求大数据开发示例 创建 400 小时的繁忙工作任务示例大数据开发示例 创建 400…

WPF UI交互专题 界面结构化处理 查看分析工具Snoopy 逻辑树与视觉树 平面图像 平面图形 几何图形 弧线 01

1、开发学习环境 2、XAML界面结构化处理 3、逻辑树与视觉树 4、基于XAML的标签扩展方式 5、基础控件应用分析 6、控件常用属性与事件总结 7、常用控件特别属性说明 8、平面图形控件与属性 9、平面几何图形 10、弧线的处理过程 WPF项目-XAML 项目表现形式 项目结…