下午好。
目前我正在尝试在"主要活动中编写代码"向我的IRIS无人机发送一些航路点,但它只在积分为5时才有效。你能检查一下我的代码并给我一些关于发生了什么的建议,以及如何向我的无人机发送更多航路点?我非常感谢您的帮助,因为我是Android的新成员:
代码:
public void onBtnConnectTap3(View view) {
if (this.drone.isConnected()) {
this.drone.disconnect();
} else {
Spinner connectionSelector = (Spinner) findViewById(R.id.selectConnectionType);
int selectedConnectionType = connectionSelector.getSelectedItemPosition();
Bundle extraParams = new Bundle();
if (selectedConnectionType == ConnectionType.TYPE_USB) {
extraParams.putInt(ConnectionType.EXTRA_USB_BAUD_RATE, DEFAULT_USB_BAUD_RATE); // Set default baud rate to 57600
} else {
extraParams.putInt(ConnectionType.EXTRA_UDP_SERVER_PORT, DEFAULT_UDP_PORT); // Set default baud rate to 14550
}
ConnectionParameter connectionParams = new ConnectionParameter(selectedConnectionType, extraParams, null);
this.drone.connect(connectionParams);
}
currentMission = new Mission();
currentMission.clear();
for (int i = 1; i < 20; i++) {
waypoint2=new Waypoint();
yaw=new YawCondition();
waypoint2.setCoordinate(new LatLongAlt( i, i, i));
yaw.setAngle(i);
missionI3 = waypoint2;
currentMission.addMissionItem(missionI3);
missionI2=yaw;
currentMission.addMissionItem(missionI2);
}
this.drone.generateDronie();
this.drone.setMission(currentMission, true);
this.drone.arm(true);
}
Dependencies in Build.gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.o3dr.android:dronekit-android:2.3.11'
}
我想知道您是否也知道如何在Android中为3DRobotics无人机开发应用程序,同时考虑到我的主要来源是:http://android.dronekit.io/first_app.html和http://android.dronekit.io/javadoc/
提前感谢您的回答。
答案 0 :(得分:4)
我不完全确定您要完成的任务,但我发现您的代码中存在一些可能的错误。
使用最新的dronekit-android。目前的版本是2.7.0。您可以在此处https://bintray.com/3drobotics/maven/dronekit-android/view
你正在组建一个包含38个项目(19个航点和19个偏航)的任务。通过将航点坐标设置为1,1,1 ... 19,19,19,您正在做一件非常不安全的事情。你的车辆会飞到我认为你不想要的地方。
我不确定你为什么generateDronie()
。根据文档
生成动作以创建dronie任务,并将其上传到连接的无人机。
一个dronie是一个特定类型的任务,将飞行自拍路径。
setMission()
是正确的。但是,代码的最后一步是布防车辆。你需要告诉无人机实际执行任务。您可以使用startMission()
类中的MissionApi
方法执行此操作。
使用相同的用户交互小心设置和启动任务。 setMission()
始终无法上传到车辆。如果是这种情况,startMission()
将运行上次成功上传到车辆的任务。
您可以通过收听广播AttributeEvent.MISSION_SENT
来验证上传是否成功。
您可以通过向您认为缺少或需要澄清的API添加javadoc来为文档做出贡献。