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

相关文章

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert