DJI -dev

本文介绍如何使用DJI ROS SDK开发无人机控制系统,包括硬件设置、软件环境配置及开发流程。文中详细解释了如何设置ROS包Onboard-SDK-ROS,并提供了关键参数设置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要介绍使用DJI ROS SDK开发的教程和其中的一些说明

M00 and Onboard-SDK-ROS

MATRICE 100 被设计为可以使用遥控器、机载备和 移动 设备进行控制。如果遥控器让飞切换到 API控制模式,设备通过 Onboard API , Mobile API可以请求获得控制权。
系统架构框图
启用 API控制 之后 ,将遥控器模式开关置为中位 (F档)。 编译 ROS package Onboard-SDK-ROS中的各package,如果在自己的package的launch文件中添加

<include file="$(find dji_sdk)/launch/sdk_manifold.launch" />

我们这里看一下这个launch文件,内容如下

<launch>
    <node pkg="dji_sdk" type="dji_sdk_node" name="dji_sdk" output="screen">
        <!-- node parameters -->
                <param name="drone_version" type="string" value="M100"/>
        <param name="serial_name" type="string" value="/dev/ttyTHS1"/>
        <param name="baud_rate" type="int" value="230400"/>
        <param name="app_id" type="int" value="1027749"/>
        <param name="app_version" type="int" value="1"/>
        <param name="app_bundle_id" type="string" value="Welcome to use dji-sdk"/>
        <param name="enc_key" type="string" value="5de4dfff4bea190522bd6d9bb7da434a213c5e30611a8d5f01c8ed1146e1712a"/>
        <param name="groundstation_enable" type="int" value="1"/>
    </node>
</launch>

运行的节点是dji_sdk package中的sji_sdk_node,主要的参数是串口的设备号,串口波特率和app_id和enc-key.最后两个参数可以在dev.dji.org的网站上申请。

开发流程

设置

硬件设置
软件系统环境的配置
  • 环境
    1. Operating System: Ubuntu 14.04, Manifold
    2. ROS version: ROS Indigo
  • 软件要求
    1. Install C, C++ Compiler and Development Tools by installing build-essential
    2. Install CMake 2.8.3 or newer
    3. Install ROS and its dependencies
    4. 配置catkin环境
  • 激活

注意

  1. 飞机起飞之后直到高于1.2m之后才可以被SDK控制,降落的时候也是这样。因此最好是自己arm或者disarm飞机,然后SDK控制可以实现坐姿态控制,起飞降落,以及自己的控制逻辑。
  2. 对于水平方向的姿态控制有三种控制模式,pitch和roll,x/y方向的速度,x/y方向的位置。位置控制需要一个稳定的GPS,速度控制需要一个稳定速度反馈(可以来自guidance或者GPS), pitch and roll控制可以在guidance未安装时仅有弱GPS情况下就可以。
  3. 从ROS传输的video有较大延时,因此最好在同一个节点中读取并处理,然后发布图像和处理结构。

We provided an appendix for developers to check the details of all published topics and services, together with the definition of corresponding msgs and srvs with parameter description.

Ros development

refer
This file subscribe all the information we need for development of the application with all kinds of mission of the flight.
so we just need to add (construct) an instance of the class DJIDrone,

also we need to pay attention that
we need to add a statement in the CMakeLists.txt

set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")

User Manual
这里写图片描述
1. 使用遥控器。
2. 使用DJI GO App
这里写图片描述

### DJI SDK 串口通信使用指南 对于希望利用DJI SDK实现串口通信的应用开发者而言,了解如何配置环境以及具体操作流程至关重要。在基础设置完成后,需进行SDK相关配置并使用串口连接到飞控[^1]。 #### 配置环境与初始化 为了确保能够顺利建立串口通信,在开始之前应先完成必要的准备工作: - **下载并安装最新版本的DJI Mobile SDK** - **确认硬件设备支持串口通信功能** ```bash pip install dji-sdk ``` #### 建立串口连接实例 下面是一个简单的Python脚本示例,用于展示如何通过串口发送指令给飞行器,并接收来自飞行器的状态反馈信息。 ```python import serial from time import sleep def setup_serial_connection(port, baudrate=115200): ser = serial.Serial( port=port, baudrate=baudrate, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1 ) if not ser.isOpen(): ser.open() return ser if __name__ == "__main__": # 替换为实际使用的端口号 SERIAL_PORT = '/dev/ttyUSB0' connection = setup_serial_connection(SERIAL_PORT) while True: try: command = "GET_POSITION\r\n".encode('utf-8') connection.write(command) response = connection.readline().decode('ascii').strip() print(f"Received from drone: {response}") sleep(0.1) # 控制查询频率 except KeyboardInterrupt: break connection.close() ``` 此代码片段展示了基本框架,但请注意不同型号的具体API调用可能有所差异。更多细节可参阅官方文档获取最准确的信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值