ROS与DJI N3飞控建立连接并简单控制
来源:互联网 发布:全站仪传输软件使用 编辑:程序博客网 时间:2024/06/04 00:58
平台: UBUNTU16.04
ROS kinetic
DJI ASSISTANT 2
OSDK3.3.1
Onboard SDK ROS 3.3.1
DJI N3飞控(型号:3.2.36.8 固件:1.7.1.5)
DJI LightBridge II
一、OSDK安装
参考:http://developer.dji.com/onboard-sdk/documentation/sample-doc/sample-setup.html#ros-oes
Installing the OSDK
1-Clone (or download as zip) the DJI OSDK from Github here.
https://github.com/dji-sdk/Onboard-SDK/releases
2-Open a terminal inside the onboardsdk folder and follow these steps to build the core OSDK library:
mkdir buildcd buildcmake ..make djiosdk-core
3-Now, install the osdk-core library to your system so that the dji_sdk ROS node may find it and link against it:
sudo make install djiosdk-core
Building the ROS Nodes
4-If you don’t have a catkin workspace, create one as follows:
mkdir catkin_wscd catkin_wsmkdir srccd srccatkin_init_workspace
5-Clone (or download as zip) the DJI OSDK-ROS from Github here in the src folder.
https://github.com/dji-sdk/Onboard-SDK-ROS/releases
6-Build the dji_sdk ROS package and the dji_sdk_demo ROS package.
cd ..catkin_make
Configuration
7-Remember to source your setup.bash:
source devel/setup.bash
8-Edit the launch file and enter your App ID, Key, Baudrate and Port name in the designated places:
rosed dji_sdk sdk.launch
Running the Samples
9-Start up the dji_sdk ROS node:
roslaunch dji_sdk sdk.launch
10-Open up another terminal and cd to your catkin_ws location, and start up a sample (e.g. flight control sample):
source devel/setup.bashrosrun dji_sdk_demo demo_flight_control
11-Follow the prompt on screen to choose an action for the drone to do.
二、注意事项
1- rosed dji_sdk sdk.launch配置文件;
<launch> <node pkg="dji_sdk" type="dji_sdk_node" name="dji_sdk" output="screen"> <!-- node parameters --> <param name="serial_name" type="string" value="/dev/ttyUSB1"/> <param name="baud_rate" type="int" value="230400"/> <param name="app_id" type="int" value="×××××××"/> <param name="app_version" type="int" value="1"/> <param name="align_time" type="bool" value="false"/> <param name="enc_key" type="string" value="a2870084××××××26726e5413×××××××2099fd652××××××fac53581c1c392"/> <param name="use_broadcast" type="bool" value="false"/> </node></launch>
其中:
<param name="serial_name" type="string" value="/dev/ttyUSB1"/>
USB端口号可通过命令:
ls -l /dev | grep ttyUSB
查看。
2- DJI ASSISITANT2 中SDK项设置波特率与配置文件一致(实际均为230400),勾选“使能API”;
DJI ASSISITANT2 中重新设置波特率后需要断电再上电重启一次N3控制器。
3- 使用命令
sudo chmod 666 /dev/ttyUSB0
获取端口权限(USB端口号依据命令 ls -l /dev | grep ttyUSB查看)
4-使用命令 roslaunch dji_sdk sdk.launch 之前,DJI ASSISITANT 2 需连接N3,同时DJI LightBridge II 模式开关需拨到F档。连接成功后终端界面显示如下:
wang@wang:~/catkin_ws$ roslaunch dji_sdk sdk.launch... logging to /home/wang/.ros/log/9834××××××××b-11××××××-701c××××××b6/roslaunch-wang-7623.logChecking log directory for disk usage. This may take awhile.Press Ctrl-C to interruptDone checking log file disk usage. Usage is <1GB.started roslaunch server http://wang:41730/SUMMARYPARAMETERS * /dji_sdk/align_time: False * /dji_sdk/app_id: 1×××××0 * /dji_sdk/app_version: 1 * /dji_sdk/baud_rate: 230400 * /dji_sdk/enc_key: a287××××××××××ec8626... * /dji_sdk/serial_name: /dev/ttyUSB1 * /dji_sdk/use_broadcast: False * /rosdistro: kinetic * /rosversion: 1.12.7NODES / dji_sdk (dji_sdk/dji_sdk_node)ROS_MASTER_URI=http://localhost:11311core service [/rosout] foundprocess[dji_sdk-1]: started with pid [7641]STATUS/1 @ init, L37: Attempting to open device /dev/ttyUSB1 with baudrate 230400...STATUS/1 @ init, L47: ...Serial started successfully.[ INFO] [1502851643.785412888]: Succeeded to read from serial deviceSTATUS/1 @ init, L37: Attempting to open device /dev/ttyUSB1 with baudrate 230400...STATUS/1 @ init, L47: ...Serial started successfully.STATUS/1 @ parseDroneVersionInfo, L568: Device Serial No. = 0DBDE4T0020006STATUS/1 @ parseDroneVersionInfo, L570: Hardware = N3STATUS/1 @ parseDroneVersionInfo, L571: Firmware = 3.2.36.8ERROR/1 @ initGimbal, L677: Failed to verify subscription!ERROR/1 @ functionalSetUp, L157: Failed to initialize Gimbal!ERROR/1 @ functionalSetUp, L187: Virtual RC not supported!STATUS/1 @ getErrorCodeMessage, L590: removePackageSTATUS/1 @ getCMDSetSubscribeMSG, L672: SUBSCRIBER_ILLEGAL_INPUTSTATUS/1 @ getErrorCodeMessage, L590: removePackageSTATUS/1 @ getCMDSetSubscribeMSG, L672: SUBSCRIBER_ILLEGAL_INPUTSTATUS/1 @ getErrorCodeMessage, L590: removePackageSTATUS/1 @ getCMDSetSubscribeMSG, L672: SUBSCRIBER_ILLEGAL_INPUTSTATUS/1 @ getErrorCodeMessage, L590: removePackageSTATUS/1 @ getCMDSetSubscribeMSG, L672: SUBSCRIBER_ILLEGAL_INPUTSTATUS/1 @ getErrorCodeMessage, L590: removePackageSTATUS/1 @ getCMDSetSubscribeMSG, L672: SUBSCRIBER_ILLEGAL_INPUTSTATUS/1 @ activate, L951: version 0x3022408STATUS/1 @ activate, L964: Activation successful[ INFO] [1502851645.001466961]: drone activated[ INFO] [1502851645.022345163]: Use data subscription to get telemetry data![ INFO] [1502851645.022363712]: align_time_with_FC set to false. We will use ros time to time stamp messages!STATUS/1 @ startPackage, L314: Start package 2 result: 0.STATUS/1 @ startPackage, L316: Package 2 info: freq=100, nTopics=3.STATUS/1 @ startPackage, L314: Start package 1 result: 0.STATUS/1 @ startPackage, L316: Package 1 info: freq=50, nTopics=9.STATUS/1 @ startPackage, L314: Start package 0 result: 0.STATUS/1 @ startPackage, L316: Package 0 info: freq=10, nTopics=6.STATUS/1 @ startPackage, L314: Start package 3 result: 0.
5- ROS 节点启动成功后断开DJI ASSISITANT 2,然后新开终端并运行
source devel/setup.bashrosrun dji_sdk_demo demo_flight_control
飞机运行,终端界面显示:
wang@wang:~/catkin_ws$ rosrun dji_sdk_demo demo_flight_control[ INFO] [1502852234.628554866]: A3/N3 taking off![ INFO] [1502852234.784108884]: Motor Spinning ...
- ROS与DJI N3飞控建立连接并简单控制
- UR5机械臂--ROS系统通信建立与实时控制
- UR5机械臂--ROS系统通信建立与实时控制
- DJI妙算安装ROS Indigo
- 玩转四旋翼无人机(DJI OnBoard SDK ROS)
- JDBC编程——建立连接,并简单操作
- Eclipse连接hbase并实现简单表的建立
- Tcp连接的建立与终止及其拥塞控制
- Tcp连接的建立与终止及其拥塞控制
- 基于Dji M600-PRO的Onboard-SDk-ROS入门应用之———航点记录与自主飞行
- 如何使用MobaXterm与服务器建立连接并传输数据
- Gazebo与ROS的连接
- sokect 建立简单连接
- 玩转四旋翼无人机(DJI ROS SDK开发包及使用方法)
- 建立与Excel连接
- ROS与Matlab协同进行运动控制
- docker中的ROS容器与ROS主机的连接
- TCP的简单建立连接
- oracle启动与关闭的几种模式
- C#学习
- AndroidStudio2.2开发NDK
- Java NIO框架Netty教程(四) – ServerBootStrap启动流程源码分析
- 2017-8网页浏览记录
- ROS与DJI N3飞控建立连接并简单控制
- 网站开发(八)后台新增栏目的添加和显示
- Fidder 模拟POST GET请求
- JavaMail 邮件开发 smtp协议开发&ssl协议开发(阿里云)
- qt 生成 makefile
- C++中指针和引用的区别
- 如何用C++递归来删除所有的BST节点
- insert into 实现插入 或者满足条件更新实例
- Leetcode 300 :Longest Increasing Sequence