This project is meant to show examples using MAVSDK-Java, and is a good place to get started.
MAVSDK-Java will connect to a running instance of mavsdk_server
, that can be downloaded from the MAVSDK release page.
The example runs System drone = new System();
, which will by default connect to mavsdk_server on port 50051.
Running mavsdk_server -p 50051
from the command line will show output similar to the following:
% ./mavsdk_server -p 50051 [0]
[10:09:52|Info ] MAVSDK version: 0.25.0-11-g5e25ce90 (mavsdk_impl.cpp:26)
[10:09:52|Debug] New: System ID: 0 Comp ID: 0 (mavsdk_impl.cpp:379)
[10:09:52|Info ] Server started (grpc_server.cpp:38)
[10:09:52|Info ] Server set to listen on 0.0.0.0:50051 (grpc_server.cpp:39)
[10:09:52|Info ] Waiting to discover system on udp://:14540... (connection_initiator.h:22)
The other requirement is to have a MAVLink drone (or simulator) running. You can get started with the simulation environment here. If using docker, an alternative is to run a headless gazebo instance, as described here:
$ docker run --rm -it jonasvautherin/px4-gazebo-headless
The examples can be run with the following commands:
./gradlew takeoffAndLand
./gradlew setRtlAltitude
./gradlew runMission
Note that running ./gradlew run
will default to takeoffAndLand
.
It can be useful to start with the REPL to get a feeling of how MAVSDK-Java works. Try to start jshell from gradle (note: that may not work on all platforms):
./gradlew jshell
If everything goes well, you should now be in an interactive jshell, showing the prompt:
jshell>
Let's start by importing the Action
plugin:
jshell> import io.mavsdk.action.Action
We can now instantiate an action
object:
jshell> Action action = new Action()
And, given that mavsdk_server
is running and connected to a (possibly simulated) drone, we can directly takeoff:
jshell> action.arm().andThen(action.takeoff()).subscribe()