ar-drone:GitHub上劫持控制无人机的开源项目-华盟网

ar-drone:GitHub上劫持控制无人机的开源项目

华盟学院山东省第二期线下学习计划

     ar-drone:GitHub上劫持控制无人机的开源项目

  通过Github安装最新版本:

npm install git://github.com/felixge/node-ar-drone.git

  或者,用户不需要一些前沿的功能,也可以使用以下命令进行安装:

npm install ar-drone

  简介

  AR Drone是一种价格实惠、功能完善的四轴飞行器,使用一种专有的固件,使用户可以通过官方的FreeFlight手机应用借助WIFI进行控制。

  不同于固件,它的客户端协议是开源的,Parrot发布了一款包含大量文档和C代码的SDK。他们的目标用户是移动开发人员,使他们可以使用该SDK开发可以无线控制的游戏和应用。同时,该协议也可用于接收视频和传感器数据,使开发人员可以编写自动化程序,应对即将到来的“机器人革命”。

  状态

  该协议仍处于开发过程中,所以可能会出现功能缺失。但是,已开发部分已通过测试,并且在大多数地区可以正常工作。

  客户端

  该部分提供了一个高级的客户端API,以便支持所有的无人机功能。

  启动的最好方式使创建一个repl.js文件:

       ar-drone:GitHub上劫持控制无人机的开源项目

  使用REPL,其中包含一些功能:

       ar-drone:GitHub上劫持控制无人机的开源项目

  下面,开发人员就可以编写自动化程序实现上述功能:

        ar-drone:GitHub上劫持控制无人机的开源项目

  然后,怎样实现无人机的交互?首先,需要查看传感器数据:

       ar-drone:GitHub上劫持控制无人机的开源项目

  这些并不都是通过客户端库处理的,但是至少,开发人员可以接收droneState 和demo数据。在首次尝试时,开发人员可以使用navdata.demo.altitudeMeters功能升到一定的高度。成功后,可以进行下一步尝试:查看摄像头照片。PngBuffers函数可以帮助实现该功能(要求$PATH变量中包含最近版本的ffmpeg):

       ar-drone:GitHub上劫持控制无人机的开源项目

  首次尝试可能只是将这些Png图像暴露为http节点服务器。然后,就可以将他们注入到opencv模块。

  客户端API

  arDrone.createClient([options])

  返回一个新的Client对象,其中的options包含:

  ip:无人机的IP,默认为“192.168.1.1”

  frameRate:PngEncoder的帧速率,默认为5

  imageSize:PngEncoder生成的图像大小,默认为NULL

  client.createREPL():启动交互式界面,其中包含在有效范围内可用的所有客户端方法。另外,client解析为client实例。

  client.getPngStream():返回PngEncoder对象,以data事件的形式发出独立的png图像缓冲区。多个调用返回相同的对象。Connection的声明周期由客户端管理。

  client.getVideoStream():返回TcpVideoStream对象,以data事件的形式发出原始TCP数据包。多个调用返回相同的对象。Connection的声明周期由客户端管理。

  client.takeoff(callback):将内部fly状态设为true,当无人机报告为盘旋状态时,调用callback。

  client.land(callback):将内部fly状态设为true,当无人机报告为着陆状态时,调用callback。

  client.up(speed) / client.down(speed):控制无人机增加或降低高度,speed值在0至1之间。

  client.clockwise(speed) /client.counterClockwise(speed):使无人机旋转,speed值在0至1之间。

  client.front(speed) / client.back(speed):控制定位,以摄像头为参考点的水平运动,speed值在0至1之间。

  client.left(speed) / client.right(speed):控制转动,以摄像头为参考点的水平运动,speed值在0至1之间。

  client.stop():将无人机所有的运动命令设置为0,使其在适当的位置盘旋。

  client.calibrate(device_num):要求无人机校准设备,当前AR.Drone固件只支持一个设备校准:设备号为0的磁传感器。该磁传感器只有在无人机飞行时才能被校准,并且会使无人机360度偏航。

  client.config(key, value, callback):向无人机发送配置命令,用户需要下载SDK,来获取ARDrone_Developer_Guide.pdf中完整的命令列表。

  例如,以下命令会要求无人机发送完整的导航数据:

  client.config(‘general:navdata_demo’,'FALSE’);

  当无人机接收该配置请求或时间超时时,会调用callback。

  或者,也可以传递一个包含以下成员的选项对象:

  key:配置键

  value:配置值

  timeout:等待无人机ACK响应的时间,以毫秒为单位

  例如:

      ar-drone:GitHub上劫持控制无人机的开源项目

  client.animate(animation,duration)

  根据给定的duration(毫秒为单位)执行预定的飞行序列,animation可以为以下值:】

      ar-drone:GitHub上劫持控制无人机的开源项目

  例如:

  client.animateLeds('blinkRed', 5, 2)

  client.disableEmergency()

  当navdata.droneState.emergencyLanding为0时,将emergencyREF位设成1,可以恢复失去控制的无人机,将红灯更改为绿灯,使其可以重新飞行。当创建更高一级的客户端时,该过程会隐式地完成。

  使用以下函数启用演示导航数据:

client.config('general:navdata_demo', 'FALSE');

  UdpControl

  UdpControl是一个低级API。如果开发人员更倾向于简单的实现,可以参考客户端文档。

  可以通过向5556端口发送UDP数据包控制无人机。由于UDP不能保证数据报的顺序和交付,客户端需要重复发送指令,并在每一条指令中包含递增的序列号。

  例如,用于takeoff/landing(REF)的命令,序列化为1,参数值为512:

  AT*REF=1,512/r

  为了减缓这些数据包的创建和发送,该模块使用UdpControl类处理该任务。例如,以下进程可以使无人机起飞并原地盘旋:

        ar-drone:GitHub上劫持控制无人机的开源项目

  如果要降落,可以向pcmd()方法传递一个参数:

       ar-drone:GitHub上劫持控制无人机的开源项目

  根据以上内容,就可以创建一个简单的程序:

       ar-drone:GitHub上劫持控制无人机的开源项目

  UdpControl API

  arDrone.createUdpControl([options]) / newarDrone.UdpControl([options])

  创建新的包含options的UdpControl实例:

       ar-drone:GitHub上劫持控制无人机的开源项目

  udpControl.raw(command, [arg1, arg2, ...])

  入队原始的AT*命令,如果用户想要完全控制权,这是很有必要的。

  例如,起飞指令可以下列形式发送:

udpControl.raw('REF', (1 << 9));

  udpControl.ref([options])

  入队AT*REF命令,选项为:

  fly:设置为true可以起飞或暂停;设置为false可以开始降落或停止,默认为false

  emergency: true为设置emergency位,false不设置,默认为false。详情请参考SDK官方指南

  udpControl.pcmd([options])

  入队AT*PCMD命令,选项为:

  front或back:以前置摄像头的方向为参考,前进或后退

  left或right:以前置摄像头的方向为参考,向左或向右

  up或down:增加或减少高度

  clockwise或counterClockwise:绕中心轴旋转

  每个选项的值都为速度,值在0至1之间,也可以使用负值,例如,{front: -0.5}等同于{back: 0.5}。

  udpControl.flush()

  将已入队的命令以UDP数据包的形式发送给无人机。

  环境变量

  DEFAULT_DRONE_IP

  摄像头使用

  用户可以使用顶部摄像头和底部摄像头,需要更改配置:

      ar-drone:GitHub上劫持控制无人机的开源项目

www.idc126.com

原文地址:https://hack.77169.com/201603/225264.shtm

本文由 华盟网 作者:怪狗 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论