我正在尝试从Windows环境启动DJI OSDK并使其运行,但是在此过程中遇到了一些障碍。知道该SDK已针对Windows 10发布,但尚未包括适用于M200 / 600的.Net API(我正在尝试进行接口连接)。
因此,我首先想出了使它在 Windows 上运行的最佳机会,是尝试从Windows运行Windows示例应用程序(通过Visual Studio 2017)。起初与Linux依赖关系纠缠不清,但最终通过编写 Windows Serial conn 类并包括用于Windows的 pthread.dll 来弄清了这一点(进行了一些小的附加改动,并包含了#if _WIN32等...)
经过大量的编码和调试(也通过VS工具尝试了Qt示例应用程序-蠕虫本身就是一整罐),我仍然在无人机/ RPA上使用“ Hello world”应用程序。 (即使其余的工作都可以在我将其导出到DLL并在c#环境中实现的情况下进行,但除此之外)。
连接到平台后(基本上是初始化和串行端口打开),激活功能会将您的应用ID +密钥发送给RPA并收到确认消息:这是我的代码:
bool threadSupport = true; //disable first so that able to debug
vehicle = new Vehicle(Port, baud, threadSupport, AdvancedSensing);
//test if connection works fine
if (!vehicle->protocolLayer->getDriver()->getDeviceStatus())
{
//not working, delete current instances
delete (vehicle);
vehicle = nullptr; //set back to null pointer
}
DJI::OSDK::Vehicle::ActivateData actData;
actData.ID = appID;
actData.encKey = new char[65];
strcpy(actData.encKey, key);
actData.version = getFWVersion();
ACK::ErrorCode ack = vehicle->activate(&actData, 1);
激活功能返回“无效反馈”:
STATUS / 1 @ DJI :: OSDK :: Win_serial_device :: init,L47:尝试使用波特率230400打开设备COM21 ...
STATUS / 1 @ DJI :: OSDK :: Win_serial_device :: init,L75:...串行成功启动。
ERRORLOG / 1 @ getDroneVersion,L1378:未获得无人机版本!请不要继续。可能的原因: 串口连接:
SDK未启用,请检查DJI Assistant2 SDK-> [v]启用API控制。
波特率不正确,请在DJI Assistant2-> SDK-> baudrate中进行确认。
TX和RX引脚反相。
串行端口被另一个程序占用。 *需要许可。请执行'sudo usermod -a -G Dialout $ USER'(您不需要用用户名替换$ USER)。然后注销并再次登录
ERRORLOG / 1 @激活,L1267:无法初始化某些车辆部件! STATUS / 1 @ getErrorCodeMessage,L656:激活STATUS / 1 @ getCommonErrorCodeMessage,L722:ACK_NO_RESPONSE_ERROR
...已经检查了建议的问题,但看不到任何明显的问题。在这一点上,不知道问题是否出在硬件,软件(具有更改的代码和线程)上。如果有人使用DJI平台(M系列)或DJI开发人员。团队可以帮忙吗?我很想让这个工作! :(
我还在Github DJI OSDK Win Console上共享了代码解决方案
答案 0 :(得分:0)
嗨,我和我的海生博士已经运行DJI硬件三年,用于基于非GPS / LIDAR / Vision的自主研究。
DJI不会告诉您完整列表,这是一个典型的问题。这是我想出的清单
(1)首先连接API电缆。然后运行OSDK。然后连接模拟器电缆,然后运行DJI Assistant。 DJI认为没有必要共享适当的序列垃圾。
(2)确保您的电缆是3.3,而不是5
(3)Tx Rx交换。常见问题。可以实时检查
(4)确保DJI go应用正在运行且控制器已开机b4 开始串行连接
(5)确保应用程序ID和Enc密钥正确。与该ID和密钥关联的帐户也在您的平板电脑中运行。对于某些特殊的无指南针固件,我们会遇到此问题,如果您与DJI有着密切的关系,它们将为您提供很多测试条件。
(6)确保您的序列号具有权限。在ubuntu中是sudo chmod a + rw / dev / serial / by-id / usb-XXmanufactoridXX-port0。 Windows忘记了。多年没有使用
(7)确保已在DJI Assistant中启用了API。另外,为了进行快速检查,请断开连接并连接到助手,确保仍检查API。我们对此有不好的经验。无论我检查多少次,都取消检查。花了我们一段时间才能发现错误
(8)确保正在运行当前的Assistant2。对于matrix,应为Matrix的DJI Assistant。对于不同的无人机,有不同的版本。我知道它的复杂性。不知道为什么要这么做。
(9)确保您的OSDK构建完整且可正常运行。没有遗漏的依赖关系或有趣的错误。新的3.7和3.8立体视觉系统经常发生这种情况
到目前为止,这几乎是我能想到的全部。