M100 (1) 运行
软件环境设置指南
本指南详细介绍了使用Onboard SDK所需的软件环境。
https://developer.dji.com/onboard-sdk/documentation/development-workflow/environment-setup.html#all-platforms
下载 电脑端调参软件
- DJI Assistant 2 调参软件 v.1.1.2
https://www.dji.com/cn/matrice600/info#downloads
下载 手机端调参软件
- DJL GO Creat
https://www.dji.com/cn/goapp
下载SDK
https://developer.dji.com/cn/onboard-sdk/

- 从Github
下载板载SDK
https://github.com/dji-sdk/Onboard-SDK
下载板载SDK-ROS存储库
https://github.com/dji-sdk/Mobile-SDK-Android
启用OSDK API
激活账号
https://developer.dji.com/cn/user/apps/#onboard


l g
<launch>
<node pkg="dji_sdk" type="dji_sdk_node" name="dji_sdk" output="screen">
<!-- node parameters -->
<param name="serial_name" type="string" value="/dev/ttyUSB0"/>
<param name="baud_rate" type="int" value="115200"/>
<param name="app_id" type="int" value="1044132"/>
<param name="app_version" type="int" value="1"/>
<param name="align_time" type="bool" value="false"/>
<param name="enc_key" type="string" value="c6e9959875a6bba94ef7ddf7720a8ff91c7daca74a67a432ad26847031a6786c"/>
<param name="use_broadcast" type="bool" value="false"/>
</node>
</launch>
0 升级
遥控器升级到最新
- 遥控器连接手机,下载升级包,手机直接升级
飞行器固件升级 1.3.1.0
- 连接windons下DJL Assistant 2 软件,自动升级
- 升级过程不能中断,否则失败
升级说明,
1 硬件连接
手机+遥控器
- 开启切换模式, 取消新手模式
- 遥控器接入F挡
飞机+电脑
- 开启USB-TTL 连接,NUC靠近开关黄色的USB口(USB0端口)
- 飞机USB小口连接另一台电脑,打开DJL Assistant 2 软件
- 设置串口波特率,开启SDK对勾
2 程序启动
在电脑上
- 编辑启动文件并在指定位置输入您的应用程序ID,密钥,波特率和端口名称:
|
|
rosed dji_sdk sdk.launch
首先获取usb端口打开权限
echo 12 | sudo chmod 777 /dev/ttyUSB0
运行官方运行文件
roslaunch light_wings passThrough.launch
运行控制节点
rosrun dji_sdk_demo demo_mission
当然可以写脚本一次运行 run.sh
#!/bin/bash cd /home/light-wings/DJI/djim100_ws
echo 12 | sudo chmod 777 /dev/ttyUSB0
roslaunch light_wings passThrough.launch
exit 0
接着可以看到windos电脑下运行的DJL Assistant 2软件能够模拟飞行
官方样例
云台测试
115200
windos assitans 2 设置波特率
ls /dev/tty* //查USB端口
echo 12 | sudo chmod 777 /dev/ttyUSB0 // 给权限
roslaunch dji_sdk sdk.launch
地面获取视频
飞机视频---------------------遥控器+视频卡+电脑+运行USB视频读取
这里写了个节点

运行命令
rosrun my_image_transport my_subscriber
代码

#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <cv_bridge/cv_bridge.h> using namespace cv;
using namespace std; void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
try
{
cv::imshow("view", cv_bridge::toCvShare(msg, "bgr8")->image);
}
catch (cv_bridge::Exception& e)
{
ROS_ERROR("Could not convert from '%s' to 'bgr8'.", msg->encoding.c_str());
}
} int main(int argc, char **argv)
{
ros::init(argc, argv, "image_listener");
ros::NodeHandle nh; Mat im;
VideoCapture cap(0); if(!cap.isOpened())
{
cout << "fail open." << endl;
} while(true)
{
cap >> im; cvNamedWindow("im", 0);
imshow("im", im);
cvWaitKey(1);
} //cv::namedWindow("view");
//cv::startWindowThread();
//image_transport::ImageTransport it(nh);
//image_transport::Subscriber sub = it.subscribe("/stereo_camera/right/image_raw", 1, imageCallback); //ros::NodeHandle nh1;
//cv::namedWindow("view1");
//cv::startWindowThread();
// image_transport::ImageTransport it(nh1);
// image_transport::Subscriber sub1 = it.subscribe("/stereo_camera/left/image_raw", 1, imageCallback); //ros::spin();
//cv::destroyWindow("view");
return 0;
}

cmake_minimum_required(VERSION 2.8.3)
project(my_image_transport) find_package(catkin REQUIRED COMPONENTS
cv_bridge
image_transport
OpenCV
) catkin_package(
# INCLUDE_DIRS include
# LIBRARIES my_image_transport
# CATKIN_DEPENDS cv_bridge image_transport
# DEPENDS system_lib
) include_directories(
# include
${catkin_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIRS}
) add_executable(my_publisher src/my_publisher.cpp)
target_link_libraries(my_publisher ${catkin_LIBRARIES} ${OpenCV_LIBRARIES}) add_executable(my_subscriber src/my_subscriber.cpp)
target_link_libraries(my_subscriber ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})

<?xml version="1.0"?>
<package format="2">
<name>my_image_transport</name>
<version>0.0.0</version>
<description>The my_image_transport package</description> <maintainer email="light-wings@todo.todo">light-wings</maintainer> <license>TODO</license> <buildtool_depend>catkin</buildtool_depend>
<build_depend>cv_bridge</build_depend>
<build_depend>image_transport</build_depend>
<build_depend>opencv2</build_depend>
<build_export_depend>cv_bridge</build_export_depend>
<build_export_depend>image_transport</build_export_depend> <exec_depend>cv_bridge</exec_depend>
<exec_depend>image_transport</exec_depend> <!-- The export tag contains other, unspecified, tags -->
<export>
<!-- Other tools can request additional information be placed here --> </export>
</package>
M100 (1) 运行的更多相关文章
- M100 (0)开发
[SDCC 2015现场]大疆Paul Yang:多旋翼飞行器的未来就是机器人的未来 http://www.csdn.net/article/2015-11-19/2826268 开发官网 https ...
- ASP.NET Aries 入门开发教程1:框架下载与运行
背景: 鉴于框架的使用者越来越多,文档太少,不少用户反映框架的入门门槛太高. 好吧,再辛苦下,抽时间写教程吧! 步骤1:下载框架源码 开源地址:https://github.com/cyq1162/A ...
- 在传统.NET Framework 上运行ASP.NET Core项目
新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...
- Sublime Text3配置在可交互环境下运行python快捷键
安装插件 在Sublime Text3下面写代码感觉很不错,但是写Python的时候遇到了一些问题. 用Sublime Text3打开python文件,或者在Sublime Text3下写好pytho ...
- hadoop 2.7.3本地环境运行官方wordcount-基于HDFS
接上篇<hadoop 2.7.3本地环境运行官方wordcount>.继续在本地模式下测试,本次使用hdfs. 2 本地模式使用fs计数wodcount 上面是直接使用的是linux的文件 ...
- hadoop 2.7.3本地环境运行官方wordcount
hadoop 2.7.3本地环境运行官方wordcount 基本环境: 系统:win7 虚机环境:virtualBox 虚机:centos 7 hadoop版本:2.7.3 本次先以独立模式(本地模式 ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- Linux scp 设置nohup后台运行
Linux scp 设置nohup后台运行 1.正常执行scp命令 2.输入ctrl + z 暂停任务 3.bg将其放入后台 4.disown -h 将这个作业忽略HUP信号 5.测试会话中断,任务继 ...
- 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)
环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...
随机推荐
- element split 将多个单号分隔
const condeid = this.formData.WayBillCode; var item = ""; const codes = condeid.split(&quo ...
- 近乎产品MVC架构介绍-多租户模式
应用的数据部分支持多租户,租户可以是呈现区域(PersentArea)也可以是另一个应用.在数据库设计方面采用最简单的方式,在应用数据表中增加TenantTypeId(存储对应的Application ...
- [PHP] 算法-原址排序数组使奇数位于偶数前面的PHP实现
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 1.遍历数组,判断元素奇数偶数 ...
- 多环境测试,scheme
1. 新建Build Configuration 2. 新建Scheme 3. 新建User-defined Build Settings 包括bundleid以及p ...
- 本地navicate for mysql怎么修改密码?
1.以前在本地设置sql库密码,就是在本地新建数据库的时候就输入,怎么也链接不上,原来是新建数据库的时候不能输入密码,需要在内部修改. 2. 打开mysql user表 3. 打开mysql user ...
- python基础之数据的三大结构
python的三大数据结构 1.顺序 2.分支 3.循环 # if语句联系# 如果age小于18岁,则打印信息“未成年”age = 17if age <= 18: print("未成年 ...
- Oracle 关闭数据库(未使用Oracle Restart)
Oracle关闭数据库(未使用Oracle Restart) by:授客 QQ:1033553122 SHUTDOWN [选项] 选项说明: NORMAL-语句执行后,不允许创建新的连接:等待所有当前 ...
- Angular基础(八) Observable & RxJS
对于一个应用来说,获取数据的方法可以有很多,比如:Ajax, Websockets, LocalStorage, Indexdb, Service Workers,但是如何整合多种数据源.如何避免BU ...
- 【Tomcat】Unrecognized Windows Sockets error: 10106: Socket creation failed
tomcat8启动过程中报如下错误 -Nov- ::]: java.net.SocketException: Unrecognized Windows Sockets error: : create ...
- 机器学习实战(Machine Learning in Action)学习笔记————10.奇异值分解(SVD)原理、基于协同过滤的推荐引擎、数据降维
关键字:SVD.奇异值分解.降维.基于协同过滤的推荐引擎作者:米仓山下时间:2018-11-3机器学习实战(Machine Learning in Action,@author: Peter Harr ...