本系列博客用于记录如何利用DJI M210和OSDK进行上位机的算法开发,以及开发过程中遇到的问题。
基础内容来自OSDK的开发官网,同时加入了自己的理解。
ERROR 1: 在运行stereo-vision-single-thread-sample时报错:Failed to open selected camera
可能原因:
图像从DJI无人机到上位机的网络通信不畅通。图像通过白色的USB线传到TX2上,其对应的口一般是 /dev/ttyACM0。首先判断程序是不是找不到这个口:
注意,
检查确认:
ifconfig
注意到第一个连接enp0s20u1
,它代表的是DJI无人机。但是它的IP地址不正确。
解决方法:
创建一个连接,选择DJI设备
输入Address:192.168.42.3, Netmask:255.255.255.0, Gateway 192.168.42.1
通过该设置连接即可。
ERROR 2: 运行Linux例程时 Failed to open MAIN_CAMERA
可能原因1:
开启了ROS主节点。不能同时运行ROS节点和Linux例程。
解决办法:
把ROS主节点关掉即可。
ERROR 3: 运行ROS程序时can’t find yaml
原因:在当前路径下找不到m210_stereo_param.yaml文件
解决方法:
- 对于Linux方式而言,把yaml文件拷到/build/bin下面即可(yaml 在src路径下)。
然后正常执行。
./stereo-vision-depth-perception-sample UserConfig.txt m210_stereo_param.yaml
- 对于ROS节点而言,不能只给出文件名
rosrun dji_sdk_demo demo_stereo_depth_perception m210_stereo_param.yaml
还要给出文件的位置
rosrun dji_sdk_demo demo_stereo_depth_perception /home/zzy/cy_ws/src/Onboard-SDK-ROS-3.7/dji_sdk_demo/yaml/m210_stereo_param.yaml
ERROR 4: Unable to read from MAIN_CAMERA lost, retry connecting
解决办法:
把遥控器打开。目前只有和主相机相关的例程运行时需要开遥控器。
ERROR 5: 一连TX2,X5S相机就死机(屏幕变灰色)的问题
现象:
Onboard-SDK-ROS-3.8.1,飞机的白色视频线连接TX2后,平板上就无法显示相机图像。此时遥控器仍然可以控制云台转动。
原因1:可能是飞行器固件版本的问题。
可能是飞行器固件版本和Onboard-SDK以及Onboard-SDK-ROS支持的版本不对应,也可能是飞行器固件版本和遥控器固件版本不对应。(参见之前的博客https://mp.csdn.net/mdeditor/88776763#)
原因2:Onboard-SDK-ROS-3.8.1的固有问题,对于M210 V2正常现象。
可能是现在的固件还不是很完善,在和大疆的dev团队交流后,他们说这是正常现象,只要运行例程,就可以通过OSDK订阅得到相机的图像。亲测有效。
ERROR 6: 无人机未激活的问题 NEW_DEVICE_ERROR
-
出现该错误说明您使用的账号与上次飞行器被激活账号信息不同,您需要重新激活飞行器
-
您需要在运行sample的时候打开DJI GO或者Pilot,并且将飞行器连接DJI Assistant 2调参软件(请确保DJI GO或Pilot以及DJI Assistant 2已连接上互联网)
-
您可能需要尝试多次运行sample,飞行器才会被激活。飞行器被您的账号激活后,您之后的使用不需要再进行激活操作(飞行器不被其他账号重新激活的前提下)。
(搬运自https://djisdksupport.zendesk.com/hc/zh-cn/articles/360023567413-)
ERROR 7: cannot open device /dev/ttyUSB0
- 核实是否有插入串口设备,对应的设备号是否为ttyUSB0,若不是ttyUSB0您需要在UserConfig.txt进行修改。
- 核实是否串口线的TX和RX端接反了。如https://mp.csdn.net/mdeditor/88776561#所述,官网中M210 V2的接线是画错的。因此不妨反过来接试一下。一般串口线上都有指示灯,上电以后红灯亮,如果通了的话蓝灯也会亮。
(搬运自https://djisdksupport.zendesk.com/hc/zh-cn/articles/360023567413-)
ERROR 8: Unable to initialize some vehicle components!
-
说明您在硬件连接以及软件设置上有问题
-
检查您是否忘记在DJI Assistant 2中的SDK分页里勾选”使能API控制“
-
检查你UserConfig.txt文件中设置的波特率是否和DJI Assistant 2中设置的一样
-
检查您的接线是否正确,是否有接线松动或者接反
-
是否有其他程序在占用串口
-
之前是否忘记执行sudo usermod -a -G dialout $USER 去获取权限
-
您的串口或者USB转TTL模块是否支持当前设置的波特率
(搬运自https://djisdksupport.zendesk.com/hc/zh-cn/articles/360023567413-)