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

相关文章

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法

《SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法》在SQLyog中执行存储过程时出现的前置缩进问题,实际上反映了SQLyog对SQL语句解析的一个特殊行为,本文给大家介绍了详... 目录问题根源正确写法示例永久解决方案为什么命令行不受影响?最佳实践建议问题根源SQLyog的语句分

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

Win安装MySQL8全过程

《Win安装MySQL8全过程》:本文主要介绍Win安装MySQL8全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Win安装mysql81、下载MySQL2、解压文件3、新建文件夹data,用于保存数据库数据文件4、在mysql根目录下新建文件my.ini

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD