KerberosSDR代码笔记(1) 简介和安装方法

2023-10-18 12:10

本文主要是介绍KerberosSDR代码笔记(1) 简介和安装方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

KerberosSDR是一款4通道同步接收机,实质上是4个使用相同本振的rtlsdr,内部还加上了一个噪声源用来作为校准的参考信号。可以做到采样时间同步和相位同步。目前实现的功能有4通道信号测向和双通道的被动雷达。我主要使用的是测向功能

购买链接:https://item.taobao.com/item.htm?spm=a230r.1.14.1.6652f3cda3JU6H&id=608469872148&ns=1&abbucket=15#detail

使用可以参考这个视频:

KerberosSDR 无线电测向 均匀圆阵_哔哩哔哩_bilibili

视频里演示的是测向功能,并且有一个网页版的罗盘显示测向结果。这个项目还配套有一个安卓app,它可以把测向结果及确定度,当前位置、行驶方向等状态融合在一起实现自动化的信号定位,不过这个安卓app暂时没有开源。因此这里也不多介绍。

接下来我会开始讲KerberosSDR的代码,讲得不会太完整,所以这个只能算是一个笔记。

KerberosSDR提供两种安装方式,一个是直接下载树莓派镜像,然后把树莓派作为处理端处理kerberossdr的数据,并把结果用wifi发射出来,另一种是自己编译安装,支持ubuntu。

操作也可以有2种方式,一种是远程访问kerberosdr的本地网页,或者如果安装在本地电脑上,可以直接操作下面的这个界面,两种方式功能上是差不多的。

这个界面是python写的,相比网页,我比较习惯python代码。所以我讲代码还是以本地显示的python界面为主。因此要先在本地安装一下kerberossdr的相关程序。

先apt安装依赖包,并且把老的numpy删除掉

sudo apt update
sudo apt install python3-pip python3-pyqt4 build-essential gfortran libatlas3-base libatlas-base-dev python3-dev python3-setuptools libffi6 libffi-dev python3-tk pkg-config libfreetype6-dev php-cli wondershapersudo apt remove python3-numpy

然后用pip3安装一些依赖包

pip3 install numpy
pip3 install matplotlib
pip3 install scipy
pip3 install cairocffi
pip3 install pyapril
pip3 install pyargus
pip3 install pyqtgraph
pip3 install peakutils
pip3 install bottle
pip3 install paste

接下来安装kerberossdr的驱动,它是在rtlsdr的驱动稍作修改得来的。

sudo apt-get install libusb-1.0-0-dev git cmakegit clone https://github.com/rtlsdrblog/rtl-sdr-kerberoscd rtl-sdr-kerberos
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfigecho 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf

接下来安装kerberosdr的主程序

cd ~
git clone https://github.com/rtlsdrblog/kerberossdr
cd kerberossdr
sh setup_init.sh

最后输入如下命令就可以启动前面那个界面了。

./run.sh


-------------------------------------------------------------------------------------------------------------------------

你可能会碰到很多坑,建议把run.sh里某一行改为:

sudo chrt -r 50 ./_receiver/C/gate $BUFF_SIZE 2>/dev/null 1|sudo nice -n -20 sudo -u $curr_user python3 -O _GUI/hydra_main_window.py $BUFF_SIZE $IPADDR #&>/dev/null&

主要是最后几个英文要注释掉,这样有错误才会报。

比如如果有窗口但是一片空白,可能打出来 X Error: BadDrawble

那你就要做这个:

sudo nano /etc/environment
QT_X11_NO_MITSHM=1 #添加这一行到上面文件里

然后如果界面能出来无法真的收信号,你要看看_receiver/C/下是不是以前编译的二进制文件,别人拷给你的话,python代码能直接运行,C代码给了你你还要在本地重新编译的。

编译方法就是运行sh setup_init.sh了,这一步不能跳过的,它除了会编译C程序还会新建ramdisk的文件夹。

此时,如果你的这台电脑用apt安装过librtlsdr-dev。你必须把它先用apt删掉,然后编译安装rtl-sdr-kerberos的驱动,否则会缺少rtlsdr_set_dithering和rtlsdr_set_gpio函数。

另外还有个小问题,被动雷达的pyapril库可能改了一些东西,由于你下载的代码可能和pip3装到的服务器上的pyapril版本不匹配,导致hydra_signal_processor.py文件的import部分报错。

你只需要在hydra_signal_processor.py里,把下面第一行用第二行替代就行。

import pyapril.hitProcessor
#from pyapril.hitProcessor import CA_CFAR

--------------------------------------------------------------------------------------------------------------

以上适用于16.04和18.04。

如果是20.04请尝试:

GitHub - rfjohnso/kerberossdr: KerberosSDR Demo software for direction finding and passive radar

另外python3-pyqt4要删除, 用python3-pyqt5

这篇关于KerberosSDR代码笔记(1) 简介和安装方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/232513

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队