背景

Qt 的位置信息库 QtPositioning 中获取位置信息的输入源设置方法为:

QGeoPositionInfoSource::createDefaultSource()

该方法默认选择当前系统的位置信息提供服务获取经纬度坐标等。 我的系统是树莓派 Raspbian,因此安装了 geoclue2 作为位置服务,用上述方法创建位置信息源后开始获取树莓派的经纬度,再用 GeocodeModel 从 OpenStreetMap 处查询经纬度对应的实际地址。

以上是自研发软件的一些背景。

起因

在开发环境中调通了地址显示的功能后,编译部署到树莓派上,发现数据源一直是 Null 。但是 geoclue2 很确定是正常工作的,不管是示例程序还是开发环境都明确显示位置源没有问题,但就是在实际程序内不显示位置。

开 qDebug() 打印,supportedPositioningMethods 是正确的。终端给出的是这么一行提示:

libEGL warning: DRI2: failed to authenticate
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qt.positioning.geoclue2: Unable to start the client: "org.freedesktop.DBus.Error.AccessDenied" "An authorization request is already pending"
qml: Source error: 0
qt.positioning.geoclue2: Unable to start the client: "org.freedesktop.DBus.Error.AccessDenied" "'[myapp]' disallowed, no agent for UID 0"

很显然,qt.positioning.geoclue2 报错那两行跟获取不到位置信息的错误高度相关,于是理所当然的从这里下手了。

Read more »

目录

  1. 软件开发:机器学习、ROS、Linux以及C++和Python编程语言 1.1 Linux操作系统 1.2 ROS机器人操作系统 1.3 Python编程语言 1.4 机器学习与神经网络

在科研、教学方面的应用

空地协同系统除了在生产、办公等实际场景的应用以外,同样也适合用于辅助各高校的科研和教学任务。本系统涉及较多前沿技术,包括机械、硬件设计以及软件开发等科目,以本系统作为教学或科研工具将有效提高学生或科研人员在这三个科目的学习或研究进度。

1. 软件开发:机器学习、ROS、Linux以及C++和Python编程语言

要熟练掌握空地协同系统的使用,至少需要熟练掌握Linux操作系统、一定程度地了解ROS机器人操作系统;而要在现有的系统之上做二次开发则需要熟练掌握ROS,会写C++/Python并且了解机器学习相关的知识。这些都是目前前沿领域非常热门且对相关人才需求度极高的内容。

1.1 Linux操作系统

Linus Torvaldo 基于unix 基本架构重新编码的Linux系统是全世界被最为广泛使用的计算机操作系统,没有之一。小至掌上芯片的嵌入系统,大至超级计算机的操作系统,Linux都能极好地胜任。因此Linux系统的熟练使用是每一个数字行业从业人员都不可或缺的基本技能。

对于操作系统的学习和精通最有效的途径毫无疑问是长时间的上手使用。Linux是一项工具而不能算“专业知识”。这也就是说我们并不应该抱着“为了学用Linux而去用Linux”的心态去上手使用Linux系统——Linux本身就像是数字行业的电动螺丝刀,用熟了电动螺丝刀可以让大大提升你在机械、工程领域的实际工作。你也并不真的需要去专门学习如何使用电动螺丝刀,因为你在拧螺丝的时候给你从手工螺丝刀换电动螺丝刀是能极大提升你的操作体验的,因此对这样“基本工具”的使用技巧应该跟其他更具体的作业任务同步进行——你动手装配一台工程机械,在中途给你把手工螺丝刀换成电动螺丝刀,你的工作进度会大大加快,同时你对电动螺丝刀的使用熟练度也必然随之增长。Linux是同样的道理,不管是软件开发、安全运维、网站搭建还是机器人操作编程,你在做这些具体的工作时候自然会发现Linux的优越性,然后随着工作的进行你的Linux技巧也必然提升。

空地协同系统的操作使用以及二次开发正好提供了这样一项具体的工作任务。对ROS系统的操作开发离不开Linux;对各种单片机和嵌入式芯片的通讯编程需要Linux;编写上层应用、搭建网页服务端、操控以及开发无人机认同同样必须用到Linux。在这实践操作的强烈驱动下,学生和研究人员对Linux系统的熟练度必然能快速成长。

同时,本文空地协同操作手册以及更多的空地协同相关资料也包含了大量的Linux使用的基础讲解和案例。另外,研究院也提供技术支持和人工教学,帮助客户全面掌握所需的Linux技巧和知识。

1.2 ROS机器人操作系统

ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面ROS相当于一种“机器人框架(robot frameworks)”类似的“机器人框架”有:Player,YARP,Orocos,CARMEN,Orca,MOOS和 Microsoft Robotics Studio。

Read more »

目录

1 - 空地协同系统介绍 1.1 背景 1.2 系统简介 1.3 工作流程 1.4 关键技术 1.5 推广应用场景 1.6 小结

2 - AGV小车操作手册 2.1 产品概述 2.2 产品介绍 2.3 产品使用说明 2.4 安全使用注意事项

3 - 无人机(Dji RobomasterTT)操作手册 3.1 虚拟机与Linux系统的创建 3.2 安装Python开发环境 3.3 Robomaster Tello Talent使用介绍 3.4 YOLOv3视觉识别框架 3.5 样例

1 - 空地协同系统简介

Read more »

各大Linux社区和论坛最常见的提问之一就是:“请问我应该选择哪个Linux发行版本?”

相关的回答早就已经说过无数次,理由也都阐述的非常充分。今天我来讲讲那些不推荐的Linux发行版,以及理由。

1、Linux Mint

首先Linux Mint跟ubuntu一样是一款基于debian的桌面系统,但是它并不比ubuntu的各种衍生桌面版本更好用。反而是有着如下各种问题: - 把debian的包和ubuntu的包混用,造成类似“FrakenDebian”的情况。(FrakenDebian特指将其他版本的包装进稳定版debian从而降低其稳定性或使apt包管理工具失效,甚至造成系统漏洞的情况。) - 在版本升级中存在bug。 - 他们的网站被黑过两次,其中一次使得Linux Mint外发的ISO镜像里内置了恶意软件。

2、Solus

  • 作为一款定位为“滚动发行”的Linux发行版(滚动发行指频繁更新迭代,譬如Arch Linux和openSUSE tumbleweed就是典型的滚动发行的Linux版本),它宣传所有用户都应该来用滚动发行的Linux版本,但其实这种模式并不适合所有人。而且它也不算多么滚动更新,只是定期在周五更新而已。
  • 缺少动态核心模块支持(Dynamic Kernel Module Support,简称DKMS)。没法自动给不在软件源里的驱动重建模块。
  • 几乎没有冲突的包。譬如,wine-staging就不在它的软件源里。
  • 无视通用标准。譬如,软件版本号跟系统版本走而不是软件包自己的版本走。
  • 松鼠病,装一个软件可能用到的依赖包一股脑全给你装上,即使这个包一千个用户里也不一定有一个用得到。
  • 公测不公开测反而找赞助者付费测试。
Read more »

本文属于穷人新手向教程,不是成品NAS使用说明(买群晖的话直接看它说明书就行了)。不在乎溢价几百上千买成品NAS的壕请不要嘲讽,老手们发现我说的不对请尽管指出,我一定修改。

硬件准备: - 台式或笔记本电脑一台。(用于下载系统镜像、制作U盘启动盘、远程配置NAS等。下文简称“电脑”)

  • 8G以上空白U盘一个。(作为系统安装盘)

  • 淘汰下来且主板、CPU、内存、电源没有故障的家用电脑主机一台(可以用自家淘汰的或者亲友那儿吃灰的机器,显卡可以拔掉。下文简称“NAS主机”)

  • 同容量硬盘若干(根据你自己的需求,或者原来主机里的硬盘没坏你也不需要加容量那就继续用也行)

  • 键盘、显示器、有线网络。(键盘和显示器在安装配置好后可以拔掉仅留电源网线连接,后续的访问配置通过远程用电脑甚至手机操作)

本文默认您有以下前置知识或技能: - 你能看懂计算机相关的英语单词或者熟练使用各种翻译工具 - 你能熟练使用Windows系统和互联网浏览器 - 你能在NAS主机上拆装硬盘

安装步骤目录:

Read more »

NAS(Network Attached Storage)可以理解为一台仅供私人使用的存储服务器。该服务器可以挂载多个硬盘或者组成磁盘阵列,用于存储你的电影音乐文字等等各种媒体文件,并且可以让你通过网络在各个不同的地方获取到这些媒体资源。

既然是服务器,那自然搭建服务器跟搭建NAS就有着十足的共同点。服务器可以理解成设计用于网络远程访问、存储的计算机。它不需要键盘、鼠标这样的输入设备也不需要显示器、音响这样的输出设备,当然也就不需要显卡和声卡。有CPU、网卡、内存加上硬盘就能拼起一台服务器,也就足够拼起一台NAS。

由于不需要运行桌面程序,服务器或NAS对于CPU和内存的要求在仅供个人使用的情况下其实是远低于家用电脑的,因此像是淘汰下来的老电脑,在没有特殊故障的前提下完全可以拔掉显卡和键鼠,装上合适的系统配成NAS。这样的一台NAS甚至性能会高于你花大价钱从某些成品NAS厂商(如群晖)那里买来的新机器。你仅仅需要额外付出一点学习成本。况且,对于有志搭建家用NAS的用户,相信配置系统或者说“折腾”本身也是可以带来相当大的乐趣的。何必花那大笔溢价买那一台怎么看都性能一般系统也只是给Linux套了个WebUI的破机器。

服务器和NAS跟家用电脑一样也需要操作系统,甚至也可以装Windows Server。不过绝大多数的服务器还是上了Linux的各种发行版,原因有以下几个:

  1. Windows要花钱
  2. 绝大多数Linux发行版的资源占用和稳定性完爆Windows
  3. 在Linux上远程安装和配置服务远比Windows方便

有人可能会问只能打命令行的Linux怎么会比有图形界面能用鼠标的Windows还方便?这里我举个例子说明,譬如我要安装Apache2网站服务:在Windows上我需要先去微软的网站把相关的VC库下载好,再去Apache的网站下好Apache2的安装包,解压缩(解压缩过程还要自行设置解压的目标文件夹),设置httpd服务开机运行并在防火墙里打开协议和端口。而在Linux上呢?只要一条sudo apt install apache2(假设是debian/ubuntu版本),搞定。

Read more »

随便写点原理介绍,不涉及具体操作和NAS架设方式

1、NAS是啥? 一块或几块硬盘,装在一台能联网能装系统的设备里(该设备可以是电脑主机,服务器,路由器,甚至一台能刷系统的示波器都行),并通过一系列设置使得用户可以从外网访问搭载在已联网设备的硬盘里的资源。

2、要装什么系统? 一般来讲对于NAS,我们总是需要需要远程操控,因此给服务器端准备的系统是最合适的,也就是linux的各种发行版本,Ubuntu/debian/centOS/openwrt(包括群晖那个系统其实也是linux核心的),当然也可以装windows server

3、为什么要装这些系统? 有了系统你才可以有网卡驱动,才能联网,才能安装并开启各种服务(nfsd,sshd,samba,vsftpd,httpd,.... 还有其他的譬如nextcloud什么的)

4、这些服务是干嘛的? 实现外部连接、应用程序、资源访问、防火墙等等,在终端里用命令打开服务就行。 另外像是各种参数设置一般是有一个config或json什么的文件直接改里面的内容。对,也就是群晖给了一个网页让你可以改的那些乱七八糟的参数,其实都写在一个文件里,给你特意写一个网页是怕你不会打命令行而不是必须要这网页。

Read more »
0%