【仅python2可用,python3安装会出现各种难以解决的问题】

Osh调制信号数据集(https://github.com/radioML/dataset),是调制信号处理方向, 大家非常认可的一个数据集,非常适合机器学习 + 深度学习实验. 为了生成该数据集, 踩了无数坑, 大概花了3天时间,终于把整个代码跑通了,能自己生成数据集了。特地记录,以防后续踩坑。

安装pybombs

直接sudo pip install gnuradio 或者使用源码安装gnuradio时都会有很多bug,不是Linux发烧友尽量不要尝试-->反正最后都会失败的。最最最好的有效的方式是使用pybombs安装。

pybombs是封装好的自动化程序,会自动下载源码包然后编译安装,过程中会自己下载依赖包,比自己下载源码编译安装省事很多。官网https://github.com/gnuradio/pybombs

 

安装pip和pybombs

sudo apt-get install python-pip
pip install --upgrade pip
pip install git+https://github.com/gnuradio/pybombs.git

获取安装库

pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git
pybombs recipes add gr-etcetera git+https://github.com/gnuradio/gr-etcetera.git

安装到/usr/local目录,安装目录下会有.pybombs目录,配置文件保存在用户目录的.pybombs文件夹

pybombs prefix init /usr/local -a myprefix -R gnuradio-default

默认会安装很多组件,如果安装到中途断了,再用上面的命令无法执行怎么办?

可以删掉/usr/local下的.pybombs,然后整个重新安装,提示配置文件直接覆盖就行,如果只是个别组件导致的中断,可以先用pybombs卸载该组件,再重新安装,比如安装rtl-sdr出错:

pybombs remove rtl-sdr
pybombs install rtl-sdr

安装完成后检查组件,再加上一些没有自动安装的组件:

pybombs install osmo-sdr rtl-sdr gnuradio dump1090 hackrf bladeRF airspy gr-iqbal libosmo-dsp gr-osmosdr gqrx

GNSS-SDR在Ubuntu 16.04直接安装可能会出错,因为安装glog和gflags时候可能会因autoconf版本较高而导致编译错误,所以用pybombs将几个依赖包先装上再安装gnss-sdr即可:

pybombs install armadillo gflags glog gnutls
pybombs install gnss-sdr

安装完成后,执行环境变量脚本,然后执行gnuradio-companion就能打开界面,gnuradio-config-info可以查看版本修改配置:

cd /usr/local
. ./setup_env.sh
gnuradio-config-info -v
gnuradio-companion

这样,gnuradio算是成功安装了,只是需要的时间有点长,网速实在是太慢了。

 

现在就可以运行代码了吗?too young,还有更多的问题呢。

其中,解决时间最长的就是mapper和mediatools的问题,这俩兄弟库,是必须使用pybombs安装的特有的调制信号生成库。

两个库的安装命令分别是:

pybombs install gr-mediatools
pybombs install gr-mapper

最后,需要更新链接:

sudo ldconfig

至此,调制信号能正确生成,真是不容易。并且,如果python安装了mapper库的话,需要将其卸载。另外,如果还报错,一般就是缺少了python中的简单库,直接用pip install就行。

最后强调一下, 仅在Python 2中安装成功, Python3中尝试多次,均失败(有部分库不支持python3,但又是gnuradio安装的必须库),当然可以修改这些库,但太耗时--TODO.