forked from RussTedrake/underactuated
-
Notifications
You must be signed in to change notification settings - Fork 0
/
drake.html
245 lines (179 loc) · 11.4 KB
/
drake.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
<!DOCTYPE html>
<html>
<head>
<title>Ch. 21 - Drake</title>
<meta name="Ch. 21 - Drake" content="text/html; charset=utf-8;" />
<link rel="canonical" href="http://underactuated.mit.edu/drake.html" />
<script src="https://hypothes.is/embed.js" async></script>
<script type="text/javascript" src="chapters.js"></script>
<script type="text/javascript" src="htmlbook/book.js"></script>
<script src="htmlbook/mathjax-config.js" defer></script>
<script type="text/javascript" id="MathJax-script" defer
src="htmlbook/MathJax/es5/tex-chtml.js">
</script>
<script>window.MathJax || document.write('<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js" defer><\/script>')</script>
<link rel="stylesheet" href="htmlbook/highlight/styles/default.css">
<script src="htmlbook/highlight/highlight.pack.js"></script> <!-- http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html#language-names-and-aliases -->
<script>hljs.initHighlightingOnLoad();</script>
<link rel="stylesheet" type="text/css" href="htmlbook/book.css" />
</head>
<body onload="loadChapter('underactuated');">
<div data-type="titlepage">
<header>
<h1><a href="index.html" style="text-decoration:none;">Underactuated Robotics</a></h1>
<p data-type="subtitle">Algorithms for Walking, Running, Swimming, Flying, and Manipulation</p>
<p style="font-size: 18px;"><a href="http://people.csail.mit.edu/russt/">Russ Tedrake</a></p>
<p style="font-size: 14px; text-align: right;">
© Russ Tedrake, 2022<br/>
Last modified <span id="last_modified"></span>.</br>
<script>
var d = new Date(document.lastModified);
document.getElementById("last_modified").innerHTML = d.getFullYear() + "-" + (d.getMonth()+1) + "-" + d.getDate();</script>
<a href="misc.html">How to cite these notes, use annotations, and give feedback.</a><br/>
</p>
</header>
</div>
<p><b>Note:</b> These are working notes used for <a
href="http://underactuated.csail.mit.edu/Spring2022/">a course being taught
at MIT</a>. They will be updated throughout the Spring 2022 semester. <a
href="https://www.youtube.com/channel/UChfUOAhz7ynELF-s_1LPpWg">Lecture videos are available on YouTube</a>.</p>
<table style="width:100%;"><tr style="width:100%">
<td style="width:33%;text-align:left;"><a class="previous_chapter" href=rl_policy_search.html>Previous Chapter</a></td>
<td style="width:33%;text-align:center;"><a href=index.html>Table of contents</a></td>
<td style="width:33%;text-align:right;"><a class="next_chapter" href=multibody.html>Next Chapter</a></td>
</tr></table>
<script type="text/javascript">document.write(notebook_header('drake'))
</script>
<!-- EVERYTHING ABOVE THIS LINE IS OVERWRITTEN BY THE INSTALL SCRIPT -->
<chapter class="appendix" style="counter-reset: chapter 0"><h1>Drake</h1>
<p><drake></drake> is the main software toolbox that we use for this text,
which in fact originated in a large part due to the MIT underactuated course.
The <drake></drake> website is the main source for information and
documentation. The goal of this chapter is to provide any additional
information that can help you get up and running with the examples and
exercises provided in these notes.</p>
<section><h1>Pydrake</h1>
<p><drake></drake> is primarily a C++ library, with rigorous coding
standards and a maturity level intended to support even professional
applications in industry. In order to provide a gentler introduction, and
to facilitate rapid prototyping, I've written these notes exclusively in
python, using Drake's python bindings (pydrake). These bindings are less
mature than the C++ backend; your feedback (and even contributions) are very
welcome. It is still improving rapidly.</p>
<p>In particular, while the C++ API documentation is excellent, the autogenerated python docs are still a work in progress. I currently recommend using the <a href="https://drake.mit.edu/doxygen_cxx/">C++ documentation</a> to find what you need, then checking the <a href="https://drake.mit.edu/pydrake/">Python documentation</a> only if you need to understand how the class or method is spelled in pydrake.</p>
<p>There are also a number of <a href="https://nbviewer.jupyter.org/github/RobotLocomotion/drake/tree/master/tutorials/">tutorials</a> in <drake></drake> that can help you get started.</p>
</section>
<section id="notebooks"><h1>Online Jupyter Notebooks</h1>
<p>I will provide nearly all examples and exercises in the form of a <a
href="http://jupyter.org/">Jupyter Notebook</a> so that we can leverage the
fantastic and relatively recent availability of (free) cloud resources.</p>
<subsection><h1>Running on Deepnote</h1>
<p>We'll use Deepnote as the primary platform for the course. After
following any of the links from the chapters, you should:
</p>
<ol>
<li>Log in (the free account will be sufficient for this class)</li>
<li>"Duplicate" the document. Icon is in the top right next to
Login.</li>
<li>Run all of the cells (can use the "Run notebook" icon just above this
cell)</li>
<li>Many of the notebooks use <a
href="https://github.com/rdeits/meshcat">MeshCat</a> for interactive
visualizations. Click on the url printed just below "StartMeshcat"
(often the second code cell of the notebook) to see the MeshCat
window.</li>
</ol>
</subsection>
<subsection><h1>Running on Google Colab</h1>
<p>Although I believe that Deepnote provides a better and more reliable
experience overall, there are a few reasons to be able to also run the
notebooks on Google Colab. It has very convenient connections to Google
Drive, and also substantial free GPU resources (useful for training big
neural nets).</p>
<p>To run any notebook on Colab, just open the file in colab using a
direct link to the relevant notebook, e.g.: <a
href="https://colab.research.google.com/github/RussTedrake/underactuated/blob/master/intro.ipynb">https://colab.research.google.com/github/RussTedrake/underactuated/blob/master/intro.ipynb</a>.
Then you must manually add the following line in a code cell at the top
of the notebook (and run it once)
<pre><code class="python">!pip install underactuated</code></pre>
</p>
<p>Note: Drake's pip wheels are only updated at each (monthly) release.
During the semester, I will often use bleeding-edge features from Drake;
they will be available in Deepnote immediately, but will only work in
Colab after the next monthly release.</p>
</subsection>
</section>
<section><h1>Running on your own machine</h1>
<p>As you get more advanced, you will likely want to run (and extend) these examples on your own machine. The <drake></drake> website has a number of <a href="https://drake.mit.edu/installation.html">installation options</a>, including precompiled binaries and Docker instances. Here I provide an example workflow of setting up drake from the precompiled binaries and running the textbook examples.</p>
<p>First, pick your platform (click on your OS):</p>
<p style="text-align:center">
<span class="bionic">
<b>Ubuntu Linux (Bionic)</b> |
<span onclick="setPlatform('mac');" style="text-decoration:underline;cursor:pointer">Mac Homebrew</span>
</span>
<span class="mac">
<span onclick="setPlatform('bionic');"
style="text-decoration:underline;cursor:pointer">Ubuntu Linux
(Bionic)</span> |
<b>Mac Homebrew</b> </span></p>
<subsection><h1>Install Drake</h1>
<p>The links below indicate the specific distributions that the
examples in this text have been tested against.</p>
<h4 >Download the binaries</h4>
<div class="bionic"><pre class="highlight"><code>curl -o drake.tar.gz <div id="drake-bionic-binaries" style="display:inline">https://drake-packages.csail.mit.edu/drake/nightly/drake-latest-bionic.tar.gz</div></code></pre></div>
<div class="mac"><pre class="highlight"><code>curl -o drake.tar.gz <div id="drake-mac-binaries" style="display:inline">https://drake-packages.csail.mit.edu/drake/nightly/drake-latest-mac.tar.gz</div></code></pre></div>
<h4>Unpack and set your PYTHONPATH and Test</h4>
<div class="bionic"><pre class="highlight"><code>sudo tar -xvzf drake.tar.gz -C /opt
sudo /opt/drake/share/drake/setup/install_prereqs
export PYTHONPATH=/opt/drake/lib/python3.6/site-packages:${PYTHONPATH}
python3 -c 'import pydrake; print(pydrake.__file__)'</code></pre></div>
<div class="mac"><pre class="highlight"><code>sudo tar -xvzf drake.tar.gz -C /opt
/opt/drake/share/drake/setup/install_prereqs
export PYTHONPATH=/opt/drake/lib/python3.9/site-packages:${PYTHONPATH}
python3.9 -c 'import pydrake; print(pydrake.__file__)'</code></pre></div>
</section>
<subsection><h1>Download the textbook supplement</h1>
<div><pre class="highlight"><code>git clone https://github.com/RussTedrake/underactuated.git</code></pre></div>
<p>and install the prerequisites using the platform-specific installation script provided:</p>
<div class="bionic"><pre class="highlight"><code>cd underactuated
sudo setup/ubuntu/18.04/install_prereqs.sh
pip3 install --requirement requirements.txt
export PYTHONPATH=`pwd`:${PYTHONPATH}</code></pre></div>
<div class="mac"><pre class="highlight"><code>cd underactuated
setup/mac/install_prereqs.sh
pip3.9 install --requirement /opt/drake/share/drake/setup/requirements.txt --requirement requirements.txt
export PYTHONPATH=`pwd`:${PYTHONPATH}</code></pre></div>
<p>Note that, as always, I would strongly recommend running
<code>pip</code>
commands in a <a
href="https://python-guide-cn.readthedocs.io/en/latest/dev/virtualenvs.html">virtualenv</a>.</p>
</subsection>
<subsection><h1>Run Jupyter Notebook</h1>
<p>You'll likely want to start from the underactuated root directory. Then launch your notebook with:</p>
<div><pre class="highlight"><code>jupyter notebook</code></pre></div>
<p>The examples for each chapter that has them will be in a .ipynb file
right alongside the chapter's html file, and the notebook exercises are
all located in the <code>exercises</code> subdirectory.
</subsection>
</section>
<section><h1>Getting help</h1>
<p>If you have trouble with <drake></drake>, please follow the advice <a href="https://drake.mit.edu/getting_help.html">here</a>. If you have trouble with the underactuated repo, you can check for known issues (and potentially file a new one) <a href="https://github.com/RussTedrake/underactuated/issues">here</a>.</p>
</section>
<div style="height:30px"></div>
</chapter>
<!-- EVERYTHING BELOW THIS LINE IS OVERWRITTEN BY THE INSTALL SCRIPT -->
<div id="references"></div>
<table style="width:100%;"><tr style="width:100%">
<td style="width:33%;text-align:left;"><a class="previous_chapter" href=rl_policy_search.html>Previous Chapter</a></td>
<td style="width:33%;text-align:center;"><a href=index.html>Table of contents</a></td>
<td style="width:33%;text-align:right;"><a class="next_chapter" href=multibody.html>Next Chapter</a></td>
</tr></table>
<div id="footer">
<hr>
<table style="width:100%;">
<tr><td><a href="https://accessibility.mit.edu/">Accessibility</a></td><td style="text-align:right">© Russ
Tedrake, 2022</td></tr>
</table>
</div>
</body>
</html>