目标:搭建一个大疆无人机OnboardSDK通过局域网内(联不联网均可)利用XShell软件ssh登录并建立远程控制台,实现类似与地面站的功能。

准备平台与硬件:

  1. Xshell+Xmanager功能很强大,可以通过ssh远程登录到妙算,xmanager可以将Linux的程序GUI可视化在windows中。(Xmanager Enterprise 其实就是一个程序文件夹,里面就带有xshell,xftp等等程序)下载链接:https://pan.baidu.com/s/19tSBHU4b3SZ5mpsAeyv49A 提取码:6bs5 解压执行Xme5.exe安装。
  2. 妙算2一台(用于Onboard板载控制无人机)
  3. win10一台(用于远程终端控制OnboardSDK内的飞行控制demo与mission)
  4. 无线功能路由器或手机热点或二者都用:):用于给上面两个电脑提供局域网络(路由器联不联网插不插网线均可)
  5. USB无线网卡:Tenda 的U12产品:https://www.tenda.com.cn/faq/8220.html

【关于无线网卡,是因为妙算2-c没有无线网卡模块,我在JD上找了好些无线网卡,TP-link问客服直接说不支持linux。而且我问客服它的芯片组型号是多少自己去找对应的驱动,结果客服说不知道(ps:不想吐槽了).......所以我就直接去Tenda买了U12,而且在Tenda官网人家都给出了各种产品系列的linux驱动:)注意:linux内核版本要在2-4之间才能安装。因此在JD自行购买一个USB无线网卡给其提供局域网络。】

一、ubuntu16.04的USB无线网卡驱动编译安装:

工欲善其事必先利其器,为了能够给妙算2-C找一个linux下能用的Usb无线网卡和驱动也是费了一些时间,最后选择了U12,因为Tenda官网给出了其linux版本的一些产品的驱动,去官网下载U12其产品驱动,官网显示支持2.6.18~4.4内核(高版本里面内核编译会缺失一些头文件,Linux内核更新后一些硬件方面头文件做了相应删除简化)。产品包装里面附赠光盘里面有Linux,Mac,Windows版本驱动,自行选择安装即可。(Ps:如果不嫌麻烦可以自己去github找可用驱动

下面是最终成功编译ubuntu16.04的USB无线网卡驱动(Tenda的U12产品)

下面是编译中遇到的部分问题:

更换妙算2内核:

妙算2自带内核版本为4.13.0-36-generic,高于4.4.0,因此直接编译USB无线网卡驱动会报错提示缺少一些linux内核的一些函数头文件,可能是高版本的内核对一些函数头文件内容等进行了删除和修改,因此,我把妙算2内核降级为4.4.0-53-generic。

需要知道的是,内核映像文件主要包括以下类型:

linux-image-版本号:内核映像文件

linux-headers-版本号:内核头文件

linux-image-extra-版本号:内核扩展文件

1.查看现有内核版本:

uname -r

2.妙算插上网线后,打开终端执行:

sudo apt-get install linux-image-4.4.0.53-generic

3.查看内核是否安装成功:

dpkg -l | grep 4.4.0.53-generic

4.用编辑器打开 grub启动项引导配置文件:

sudo vim /etc/default/grub

找到第一行:

GRUB_DEFAULT=0

修改为:

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-53-generic"

5.保存退出,然后执行以下命令更新 Grub 引导

sudo update-grub

6.更新完成后重启系统

sudo reboot

7. 不出意外的话重启系统后启用的就是新的内核了,执行以下命令查看一下

uname -r
  • (可选)将其他版本的内核删除,如(对deinstall的需要用dpkg卸载):
  • a)$ sudo apt-get remove linux-image-x.x.x-xx
  • b)$ sudo dpkg -P linux-image-x.x.x-xx-generic

以为换了内核之后就完事了,结果还遇到了下面问题:

①make: *** /lib/modules/4.4.0-53-generic/build: 没有那个文件或目录。 停止

遇到这个错误,主要是没安装内核开发包(类似于kernel-devel的名字),结果我就按照:sudo apt-get install kernel-devel

结果发现根本找不到该开发包:E: Unable to locate package kernel-devel

于是我就查看原装内核(妙算2原装内核版本为4.13.0-generic)的/usr/src下面目录:

发现名字不是kernel-devel,而是headers:

于是安装linux-headers-4.4.0-53-generic :

sudo apt-get install linux-headers-4.4.0-53-generic 

下面是安装完成headers后的截图:

安装完内核头文件下面又报第②个错了...

②Linux 驱动编译报错:error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]

编译驱动时遇到这个错误提示,表示当前编译环境中将关于 DATE 以及 TIME 的警告也作为错误来进行处理的。

解决方法:

1. 在编译驱动的相应 Makefile 中增加一行:EXTRA_FLAGS += -Wno-error=date-time,然后保存重新 make;

2. 若 EXTRA_FLAGS不生效,将关键字替换为CFLAGS;有的是前者,有的是后者;

3. 修改 /lib/modules/'uname -r'/build/Makefile 文件(其中uname -r表示内核版本号若没有这个文件的话,我这里因为安装的是headers文件,所以是修改/usr/src/linux-headers-4.4.0-53-generic/Makefile),找到包含 “-Werror=date-time” 这一行注释掉,然后保存退出。之后重新 make 即可;

然后终于编译成功。插上Usb无线网卡指示灯亮起。

二、大疆A3平台远程终端OnboardSDK飞行模拟试验:

1.搭建局域网远程终端:

创建局域网并确认ubuntu中ssh服务开启:

确定windows和ubuntu可以互相ping通。

我这里用的是路由器(路由器不联网),插电之后设置静态IP,网关,子网掩码,设置wifi密码之后。windows和ubuntu都连接其wifi。

windows打开cmd:ipconfig查看Ip地址与子网掩码。

ubuntu打开终端:ifconfig(不一样哦,差了个字母),查看Ip地址与子网掩码。

确定二者位于同一IP段之后,互相Ping一下,能Ping通即可,若ping不通,关闭windows和ubuntu防火墙。

ubuntu关闭防火墙并打开22端口(下面xshell通过ssh登录从22端口进去):

  • 开启/关闭防火墙 (默认设置是’disable’)
  • sudo ufw enable|disable
  • 查看防火墙状态:
  • sudo ufw status
  • 打开或关闭某个端口,例如:
  • sudo ufw allow smtp 允许所有的外部IP访问本机的25/tcp (smtp)端口
  • sudo ufw allow 22/tcp 允许所有的外部IP访问本机的22/tcp (ssh)端口

2.ubuntu开启ssh服务:

①.查看ssh文件是否存在:

ps -aux |grep "ssh"

②.开启ssh服务

service ssh start

若报错,Unit ssh.service not found,说明ssh服务未安装。

③.安装ssh服务

sudo apt-get install openssh-server

④.查看ssh服务是否开启:

sudo ps -e | grep ssh

若找不到命令则执行第5步。

⑤.开启ssh服务:

sudo /etc/init.d/ssh start

出现 00:00:00 sshd

表示成功开启ssh服务。

⑥.查看ssh服务状态:

sudo service ssh status

之后的操作均在windows10一台电脑中完成:

3.下载完Xmanager Enterprise 5后打开文件:

可以都打开看一下,打开xbrowser浏览一下程序集内容,打开xmanager-passive用于显示远程gui,打开xshell用于ssh远程登录ubuntu(妙算2)。

4.打开Xshell创建ssh远程登录:

  • 要填的只有两个:主机IP和用户名及密码。端口号默认22。

其实通过上面互相Ping 可以发现连接同一wifi的局域网,若路由器不连网情况下自动给二者win10和ubuntu分配的IP地址就最后一位不一样。win10的ip为192.168.0.101,ubuntu的为192.168.0.100。子网掩码都是255.255.255.0(自己前面设的)网关应该都是192.168.0.1。

(若ping不通可以参考我前面一个博客,说不定可以收到启发。)

若连接失败,检查ubuntu端口22是否是开启状态,防护墙是否是关闭状态。

5.远程终端操作验证

切换~/Pictures文件夹下:cd ~/Pictures

查看内容:ls

ubuntu自带查看图片工具eye of gnome:eog kinobiao2.jpeg

于是查看了我放在下面的奇诺比奥的图片:打开xmanager-passive用于显示远程gui,即可看到下面效果:

而且右键直接可以在win10下打开ubuntu中的firefox浏览器来查看该照片。

文件共享:xshell通过ssh登录后,支持xftp下从ubuntu复制文件到windows,反之也可以。不用再下载网上所谓的其他任何程序!

直接在上面终端窗口按下:CTRL+ALT+F

发现会打开一个xftp,直接可以任意两者之间文件拖拽复制移动(xshell真实方便啊。。。)

至此,Windows和ubuntu远程建立完成,下面开始验证dji_onboardSDK中的demo。

6.OnboardSDK_ROS版本验证

普通版本就不验证了,就和平时终端执行一样,一个终端窗口即可完成。

问题就在于ROS版本,我们知道要启动一个ros程序结点,首先要打开一个终端执行roscore核心程序,才能完成ros后面工作。

ros需要在远程终端中打开多个终端窗口。实现下面效果:

我们知道在ubuntu中ROS执行时需要打开多个终端,需要我们CTRL+Shift+T在当前窗口打开一个终端,或者CTRL+ALT+T打开新终端窗口。

所以类似的在xshell中快捷键:CTRL+Shift+T

可以发现下面这个加号会出现:然后点击加号对同一个ubuntu的ip进行连接即可。自行选择点几个加号就建立几个终端。只不过是我们之前的终端都是显示在了ubuntu中,而建立了局域网后远程登录后将其显示在了我们windows电脑的xshell中。

或者直接下面这个红色圈起来的直接打开已连过的IP:

后面就没什么可以注意的了,依次执行:

source devel/setup.bash

roslaunch dji_sdk sdk.launch

新终端中执行:

source devel/setup.bash

rosrun dji_sdk_demo demo_flightcontrol

更方便地是可以ros中的所有gui,xmanager都能显示在win10窗口。

例如:

rosrun rqt_plot rqt_plot看一下无人机gps信息。

上述效果图如下:

实现Xshell断开连接情况下Linux命令继续执行

1、将原命令语句改为:nohup 命令语句 &

2、回车执行,再回车,窗口中会显示一个进程号

3、如果中途想关闭,可执行:kill -9 进程号。如果想查看命令执行情况,可执行:cat nohup.out

相关参考:

Linux 驱动编译报错:error: macro "__DATE__" https://ask.csdn.net/questions/719545

【大疆无人机OnboardSDK(三)妙算ssh远程控制台系统搭建】相关推荐

  1. 【大疆无人机OnboardSDK(一)Assistant2仿真系统搭建】

    [大疆无人机OnboardSDK(一)Assistant2仿真系统搭建] 首先:一定要仔细阅读官网给出的说明书!M600用户使用说明,以及妙算2-C使用说明,不然都搞不清哪些线的作用是干什么的,也不清 ...

  2. 大疆无人机空三建模干货分享(大疆智图集群建模超详细教程)

    Part 01 大疆无人机空三建模干货分享(大疆智图集群建模超详细教程) 大疆智图集群简介 大疆在今年5月推出的智图3.0.0及以上版本中加入了集群功能,有集群版许可的用户可以使用此功能.智图集群是由 ...

  3. 三调 图斑地类面积_国土三调攻坚冲刺,大疆无人机为调查举证提供加速度

    第三次全国土地调查(国土三调)已进入实地举证核查的攻坚阶段,大疆无人机解决方案正在辅助各地进行外业图斑举证工作.从导入图斑.自动规划航线,到举证拍摄.成果 DB 包生成.上传国土调查云平台,一体化工作 ...

  4. 给你一台大疆无人机,你能用来做点啥?(三)------倾斜摄影建模基础

    在做正射影像或者倾斜建模过程中会涉及到一些摄影测量和倾斜建模有关一些知识,顺便查了一些资料,然后觉得很有必要,就稍微系统罗列了一下,在最后还提供了几个建模航线为大家作为参考,希望对大家有帮助. 一.重 ...

  5. 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointMission

    大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...

  6. 今奥无人机举证_国土三调攻坚冲刺,大疆无人机为调查举证提供加速度

    原标题:国土三调攻坚冲刺,大疆无人机为调查举证提供加速度 第三次全国土地调查(国土三调)已进入实地举证核查的攻坚阶段,大疆无人机解决方案正在辅助各地进行外业图斑举证工作.从导入图斑.自动规划航线,到举 ...

  7. 大疆无人机被曝16个安全漏洞:可破解禁飞限制、飞行中强制坠落

    研究员针对大疆无人机进行多方面研究,如对其通信协议量身定制了一种模糊测试方法,共找到16个安全漏洞,并发现其设备跟踪协议存在隐私缺陷. 德国波鸿和萨尔布吕肯的研究人员们从无人机巨头大疆(DJI)的产品 ...

  8. 大疆无人机 MobileSDK(遥控器/手机端)开发 v4版<1>

    大疆无人机飞控开发 大疆无人机 SDK开发包 功能概述 飞行控制 相机 实时视频流 传感器数据 下载媒体文件 遥控器,电池和无线链路 连接应用程序和产品 v4版sdk 二次开发 注册成为DJI开发者 ...

  9. 大疆无人机高程不准_大疆消费级无人机快速倾斜摄影测量实践

    摘要:分别用 RTK两种测量模式测定像控点,用大疆消费级无人机 Phantom4PRO 开展倾斜摄影测量,最后进行成果检验.结果表明:RTK 电台模式(不做坐标校正,精度低).RTK-CORS 网络模 ...

最新文章

  1. 安装需要的第三方库时,命令行输入pip提示不是内部或外部命令
  2. 比Spring简单的IoC容器
  3. 字符的点阵显示(模拟户外广告显示屏)
  4. Linux系统中CPU使用率查询常用的5个命令
  5. 微服务网关Gateway-PrefixPath讲解
  6. error MSB6006: cmd.exe exited with code 3
  7. C#学习笔记---数据类型
  8. PostgreSQL 12系统表(1)pg_class
  9. Yii和ThinkPHP对比心得
  10. 基于微服务和Docker的PaaS云平台架构设计
  11. 系统学习机器学习之神经网络(六) --GrossBerg网络
  12. java解析获得birt报表的数据_java pojo实体类做birt报表数据源
  13. mysql5.7备份
  14. WordPress淘宝客ZZDGM主题Upanel插件使用补充
  15. 遗传算法matlab_通俗易懂地解释遗传算法
  16. 2022年系统分析师考试大纲
  17. 原生滑动选择器 html,自已开发完美的触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器 - j.king...
  18. 基于深度学习的单目2D/3D姿态估计综述(2021)
  19. 利用逆矩阵解线性方程组_(非)线性方程组求解库大全
  20. SpringBoot 整合 Elasticsearch 实现海量级数据搜索

热门文章

  1. python循环语句打印输出1-10_python循环语句的一些题型
  2. Dockerfile 中 CMD 为什么要避免使用 sh -c
  3. 5G专网技术解决方案和建设策略
  4. hive:对数据的处理
  5. 八零后月薪56K老程序员感慨人生的起起伏伏,跳槽居然没地方让我跳!
  6. 栈和队列的特点,什么情况下使用?
  7. Linux 应用领域
  8. 港科报道 | 香港科技大学(广州)专题新闻发布会成功举办
  9. 怎样做小程序最省钱,小程序开发平台大盘点
  10. ByteBuffer使用