# To get started

You are excited to simulate your beloved robot with this brand-new Drake software. You want to solve the robot's kinematics and dynamics. You want to calculate advanced motion planning because you heard Boston Dynamics uses Model Predictive Control to achieve backflips. You are in the right place; Drake is the software to get you started.

### Install drake

Although there are binary and [python bindings](https://drake.mit.edu/python_bindings.html#using-python-bindings) of Drake, I recommend you compile Drake from its C++ source code (this tutorial focuses only on the C++ version of Drake).

To download and install Drake, follow the [source installation instructions](https://drake.mit.edu/from_source.html).

{% hint style="info" %}
Note: Drake is compiled with the [**bazel**](https://bazel.build/) build tool (developed by Google). It has similar functions as CMake.
{% endhint %}

### After the installation, try the following simulation examples

#### Simulate a ball dropping onto an inclined plane

This [README](https://github.com/RobotLocomotion/drake/tree/master/examples/multibody/inclined_plane_with_body) helps you simulate a ball dropping from a certain height onto an inclined plane, then sliding/rolling down the plane.

#### Visualize a KUKA arm

To control the position of a KUKA arm with a slider GUI, follow these instructions. (Note: The complete code is [here](https://github.com/RobotLocomotion/drake/blob/f9e34080cf77ddf49370eaa866212e50f245e6d4/manipulation/util/geometry_inspector.py#L9).)

```
cd drake
bazel build //tools:drake_visualizer //manipulation/util:geometry_inspector
# Terminal 1
./bazel-bin/tools/drake_visualizer
# Terminal 2
./bazel-bin/manipulation/util/geometry_inspector \
    ./manipulation/models/iiwa_description/sdf/iiwa14_no_collision.sdf
```

#### Explore more examples

Ideally, you now have learned how to visualize and run a simulation. You are ready to enjoy more examples under the [*drake/examples*](https://github.com/RobotLocomotion/drake/tree/master/examples) folder, such as the [allegro hand example](https://github.com/RobotLocomotion/drake/blob/master/examples/allegro_hand/run_allegro_constant_load_demo.cc), in which you import an SDF model and run its simulation.

### Where to go from here

#### Understand Drake concepts

{% content-ref url="introduction/drake-concept" %}
[drake-concept](https://drake.guzhaoyuan.com/introduction/drake-concept)
{% endcontent-ref %}

#### Try using controllers to control a robot

{% content-ref url="drake-controllers/try-out-pid-controller" %}
[try-out-pid-controller](https://drake.guzhaoyuan.com/drake-controllers/try-out-pid-controller)
{% endcontent-ref %}

### Useful links

* [Drake Doxygen](http://drake.mit.edu/doxygen_cxx/index.html#://) (Web-based documentation for C++ source code)
* [Underactuated Robotics Online Textbook](http://underactuated.csail.mit.edu/underactuated.html) (Class taught by Prof. Russ Tedrake that heavily uses Drake)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://drake.guzhaoyuan.com/to-get-started.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
