├── .gitignore ├── 404.html ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── _config.yml ├── _data └── settings.yml ├── _includes ├── disqus.html ├── footer.html ├── google-analytics.html ├── head.html └── header.html ├── _layouts ├── default.html ├── home.html ├── misc.html └── page.html ├── assets ├── css │ ├── _sass │ │ ├── _-sections-dir.scss │ │ ├── _base.scss │ │ ├── _code.scss │ │ ├── _default.scss │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _post.scss │ │ └── _social-icons.scss │ ├── main.scss │ └── syntax.css ├── img │ ├── figure1.png │ └── figure2.png └── paper │ └── 2020_science_robotics_lee_locomotion.pdf ├── favicon.ico ├── index.html ├── pages └── Acknowlegment.html └── rss-feed.xml /.gitignore: -------------------------------------------------------------------------------- 1 | _site/ 2 | .sass-cache/ 3 | .jekyll-cache/ 4 | .jekyll-metadata 5 | .idea/ 6 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: "404: Page not found" 4 | permalink: 404.html 5 | --- 6 | 7 |
8 |

404: Page not found

9 |
10 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | # bundle exec jekyll serve 4 | 5 | # gem "jekyll", "~> 3.6.2" 6 | gem "minima", "~> 2.0" 7 | 8 | # If you want to use GitHub Pages, remove the "gem "jekyll"" above and 9 | # uncomment the line below. To upgrade, run `bundle update github-pages`. 10 | gem "github-pages", group: :jekyll_plugins 11 | 12 | # If you have any plugins, put them here! 13 | group :jekyll_plugins do 14 | gem "jekyll-feed", "~> 0.6" 15 | end 16 | 17 | # Windows does not include zoneinfo files, so bundle the tzinfo-data gem 18 | gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 19 | gem 'jekyll-paginate' 20 | gem 'jekyll-sitemap' 21 | gem 'jekyll-seo-tag' 22 | 23 | # Dependabot security update 24 | gem "nokogiri", ">= 1.11.0.rc4" 25 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (6.0.3.4) 5 | concurrent-ruby (~> 1.0, >= 1.0.2) 6 | i18n (>= 0.7, < 2) 7 | minitest (~> 5.1) 8 | tzinfo (~> 1.1) 9 | zeitwerk (~> 2.2, >= 2.2.2) 10 | addressable (2.7.0) 11 | public_suffix (>= 2.0.2, < 5.0) 12 | coffee-script (2.4.1) 13 | coffee-script-source 14 | execjs 15 | coffee-script-source (1.11.1) 16 | colorator (1.1.0) 17 | commonmarker (0.17.13) 18 | ruby-enum (~> 0.5) 19 | concurrent-ruby (1.1.7) 20 | dnsruby (1.61.4) 21 | simpleidn (~> 0.1) 22 | em-websocket (0.5.2) 23 | eventmachine (>= 0.12.9) 24 | http_parser.rb (~> 0.6.0) 25 | ethon (0.12.0) 26 | ffi (>= 1.3.0) 27 | eventmachine (1.2.7) 28 | execjs (2.7.0) 29 | faraday (1.1.0) 30 | multipart-post (>= 1.2, < 3) 31 | ruby2_keywords 32 | ffi (1.13.1) 33 | forwardable-extended (2.6.0) 34 | gemoji (3.0.1) 35 | github-pages (209) 36 | github-pages-health-check (= 1.16.1) 37 | jekyll (= 3.9.0) 38 | jekyll-avatar (= 0.7.0) 39 | jekyll-coffeescript (= 1.1.1) 40 | jekyll-commonmark-ghpages (= 0.1.6) 41 | jekyll-default-layout (= 0.1.4) 42 | jekyll-feed (= 0.15.1) 43 | jekyll-gist (= 1.5.0) 44 | jekyll-github-metadata (= 2.13.0) 45 | jekyll-mentions (= 1.6.0) 46 | jekyll-optional-front-matter (= 0.3.2) 47 | jekyll-paginate (= 1.1.0) 48 | jekyll-readme-index (= 0.3.0) 49 | jekyll-redirect-from (= 0.16.0) 50 | jekyll-relative-links (= 0.6.1) 51 | jekyll-remote-theme (= 0.4.2) 52 | jekyll-sass-converter (= 1.5.2) 53 | jekyll-seo-tag (= 2.6.1) 54 | jekyll-sitemap (= 1.4.0) 55 | jekyll-swiss (= 1.0.0) 56 | jekyll-theme-architect (= 0.1.1) 57 | jekyll-theme-cayman (= 0.1.1) 58 | jekyll-theme-dinky (= 0.1.1) 59 | jekyll-theme-hacker (= 0.1.2) 60 | jekyll-theme-leap-day (= 0.1.1) 61 | jekyll-theme-merlot (= 0.1.1) 62 | jekyll-theme-midnight (= 0.1.1) 63 | jekyll-theme-minimal (= 0.1.1) 64 | jekyll-theme-modernist (= 0.1.1) 65 | jekyll-theme-primer (= 0.5.4) 66 | jekyll-theme-slate (= 0.1.1) 67 | jekyll-theme-tactile (= 0.1.1) 68 | jekyll-theme-time-machine (= 0.1.1) 69 | jekyll-titles-from-headings (= 0.5.3) 70 | jemoji (= 0.12.0) 71 | kramdown (= 2.3.0) 72 | kramdown-parser-gfm (= 1.1.0) 73 | liquid (= 4.0.3) 74 | mercenary (~> 0.3) 75 | minima (= 2.5.1) 76 | nokogiri (>= 1.10.4, < 2.0) 77 | rouge (= 3.23.0) 78 | terminal-table (~> 1.4) 79 | github-pages-health-check (1.16.1) 80 | addressable (~> 2.3) 81 | dnsruby (~> 1.60) 82 | octokit (~> 4.0) 83 | public_suffix (~> 3.0) 84 | typhoeus (~> 1.3) 85 | html-pipeline (2.14.0) 86 | activesupport (>= 2) 87 | nokogiri (>= 1.4) 88 | http_parser.rb (0.6.0) 89 | i18n (0.9.5) 90 | concurrent-ruby (~> 1.0) 91 | jekyll (3.9.0) 92 | addressable (~> 2.4) 93 | colorator (~> 1.0) 94 | em-websocket (~> 0.5) 95 | i18n (~> 0.7) 96 | jekyll-sass-converter (~> 1.0) 97 | jekyll-watch (~> 2.0) 98 | kramdown (>= 1.17, < 3) 99 | liquid (~> 4.0) 100 | mercenary (~> 0.3.3) 101 | pathutil (~> 0.9) 102 | rouge (>= 1.7, < 4) 103 | safe_yaml (~> 1.0) 104 | jekyll-avatar (0.7.0) 105 | jekyll (>= 3.0, < 5.0) 106 | jekyll-coffeescript (1.1.1) 107 | coffee-script (~> 2.2) 108 | coffee-script-source (~> 1.11.1) 109 | jekyll-commonmark (1.3.1) 110 | commonmarker (~> 0.14) 111 | jekyll (>= 3.7, < 5.0) 112 | jekyll-commonmark-ghpages (0.1.6) 113 | commonmarker (~> 0.17.6) 114 | jekyll-commonmark (~> 1.2) 115 | rouge (>= 2.0, < 4.0) 116 | jekyll-default-layout (0.1.4) 117 | jekyll (~> 3.0) 118 | jekyll-feed (0.15.1) 119 | jekyll (>= 3.7, < 5.0) 120 | jekyll-gist (1.5.0) 121 | octokit (~> 4.2) 122 | jekyll-github-metadata (2.13.0) 123 | jekyll (>= 3.4, < 5.0) 124 | octokit (~> 4.0, != 4.4.0) 125 | jekyll-mentions (1.6.0) 126 | html-pipeline (~> 2.3) 127 | jekyll (>= 3.7, < 5.0) 128 | jekyll-optional-front-matter (0.3.2) 129 | jekyll (>= 3.0, < 5.0) 130 | jekyll-paginate (1.1.0) 131 | jekyll-readme-index (0.3.0) 132 | jekyll (>= 3.0, < 5.0) 133 | jekyll-redirect-from (0.16.0) 134 | jekyll (>= 3.3, < 5.0) 135 | jekyll-relative-links (0.6.1) 136 | jekyll (>= 3.3, < 5.0) 137 | jekyll-remote-theme (0.4.2) 138 | addressable (~> 2.0) 139 | jekyll (>= 3.5, < 5.0) 140 | jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) 141 | rubyzip (>= 1.3.0, < 3.0) 142 | jekyll-sass-converter (1.5.2) 143 | sass (~> 3.4) 144 | jekyll-seo-tag (2.6.1) 145 | jekyll (>= 3.3, < 5.0) 146 | jekyll-sitemap (1.4.0) 147 | jekyll (>= 3.7, < 5.0) 148 | jekyll-swiss (1.0.0) 149 | jekyll-theme-architect (0.1.1) 150 | jekyll (~> 3.5) 151 | jekyll-seo-tag (~> 2.0) 152 | jekyll-theme-cayman (0.1.1) 153 | jekyll (~> 3.5) 154 | jekyll-seo-tag (~> 2.0) 155 | jekyll-theme-dinky (0.1.1) 156 | jekyll (~> 3.5) 157 | jekyll-seo-tag (~> 2.0) 158 | jekyll-theme-hacker (0.1.2) 159 | jekyll (> 3.5, < 5.0) 160 | jekyll-seo-tag (~> 2.0) 161 | jekyll-theme-leap-day (0.1.1) 162 | jekyll (~> 3.5) 163 | jekyll-seo-tag (~> 2.0) 164 | jekyll-theme-merlot (0.1.1) 165 | jekyll (~> 3.5) 166 | jekyll-seo-tag (~> 2.0) 167 | jekyll-theme-midnight (0.1.1) 168 | jekyll (~> 3.5) 169 | jekyll-seo-tag (~> 2.0) 170 | jekyll-theme-minimal (0.1.1) 171 | jekyll (~> 3.5) 172 | jekyll-seo-tag (~> 2.0) 173 | jekyll-theme-modernist (0.1.1) 174 | jekyll (~> 3.5) 175 | jekyll-seo-tag (~> 2.0) 176 | jekyll-theme-primer (0.5.4) 177 | jekyll (> 3.5, < 5.0) 178 | jekyll-github-metadata (~> 2.9) 179 | jekyll-seo-tag (~> 2.0) 180 | jekyll-theme-slate (0.1.1) 181 | jekyll (~> 3.5) 182 | jekyll-seo-tag (~> 2.0) 183 | jekyll-theme-tactile (0.1.1) 184 | jekyll (~> 3.5) 185 | jekyll-seo-tag (~> 2.0) 186 | jekyll-theme-time-machine (0.1.1) 187 | jekyll (~> 3.5) 188 | jekyll-seo-tag (~> 2.0) 189 | jekyll-titles-from-headings (0.5.3) 190 | jekyll (>= 3.3, < 5.0) 191 | jekyll-watch (2.2.1) 192 | listen (~> 3.0) 193 | jemoji (0.12.0) 194 | gemoji (~> 3.0) 195 | html-pipeline (~> 2.2) 196 | jekyll (>= 3.0, < 5.0) 197 | kramdown (2.3.0) 198 | rexml 199 | kramdown-parser-gfm (1.1.0) 200 | kramdown (~> 2.0) 201 | liquid (4.0.3) 202 | listen (3.2.1) 203 | rb-fsevent (~> 0.10, >= 0.10.3) 204 | rb-inotify (~> 0.9, >= 0.9.10) 205 | mercenary (0.3.6) 206 | mini_portile2 (2.5.0) 207 | minima (2.5.1) 208 | jekyll (>= 3.5, < 5.0) 209 | jekyll-feed (~> 0.9) 210 | jekyll-seo-tag (~> 2.1) 211 | minitest (5.14.2) 212 | multipart-post (2.1.1) 213 | nokogiri (1.11.0) 214 | mini_portile2 (~> 2.5.0) 215 | racc (~> 1.4) 216 | octokit (4.19.0) 217 | faraday (>= 0.9) 218 | sawyer (~> 0.8.0, >= 0.5.3) 219 | pathutil (0.16.2) 220 | forwardable-extended (~> 2.6) 221 | public_suffix (3.1.1) 222 | racc (1.5.2) 223 | rb-fsevent (0.10.4) 224 | rb-inotify (0.10.1) 225 | ffi (~> 1.0) 226 | rexml (3.2.4) 227 | rouge (3.23.0) 228 | ruby-enum (0.8.0) 229 | i18n 230 | ruby2_keywords (0.0.2) 231 | rubyzip (2.3.0) 232 | safe_yaml (1.0.5) 233 | sass (3.7.4) 234 | sass-listen (~> 4.0.0) 235 | sass-listen (4.0.0) 236 | rb-fsevent (~> 0.9, >= 0.9.4) 237 | rb-inotify (~> 0.9, >= 0.9.7) 238 | sawyer (0.8.2) 239 | addressable (>= 2.3.5) 240 | faraday (> 0.8, < 2.0) 241 | simpleidn (0.1.1) 242 | unf (~> 0.1.4) 243 | terminal-table (1.8.0) 244 | unicode-display_width (~> 1.1, >= 1.1.1) 245 | thread_safe (0.3.6) 246 | typhoeus (1.4.0) 247 | ethon (>= 0.9.0) 248 | tzinfo (1.2.7) 249 | thread_safe (~> 0.1) 250 | unf (0.1.4) 251 | unf_ext 252 | unf_ext (0.0.7.7) 253 | unicode-display_width (1.7.0) 254 | zeitwerk (2.4.0) 255 | 256 | PLATFORMS 257 | ruby 258 | 259 | DEPENDENCIES 260 | github-pages 261 | jekyll-feed (~> 0.6) 262 | jekyll-paginate 263 | jekyll-seo-tag 264 | jekyll-sitemap 265 | minima (~> 2.0) 266 | nokogiri (>= 1.11.0.rc4) 267 | tzinfo-data 268 | 269 | BUNDLED WITH 270 | 2.1.4 271 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Joonho Lee 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Project page for Science Robotics paper "Learning Quadrupedal Locomotion over Challenging Terrain" 2 | ### Author: Joonho Lee (jolee@ethz.ch) 3 | ### https://leggedrobotics.github.io/rl-blindloco 4 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Site Build Settings 2 | 3 | # jekyll-paginate configuration 4 | paginate: 5 5 | 6 | # Build settings 7 | markdown: kramdown 8 | highlighter: rouge 9 | permalink: none 10 | plugins: [jekyll-paginate, jekyll-sitemap, jekyll-feed, jekyll-seo-tag] 11 | 12 | sass: 13 | sass_dir: assets/css 14 | style: :nested 15 | 16 | # Customise atom feed settings (this is where Jekyll-Feed gets configuration information) 17 | title: "Learning Quadrupedal Locomotion over Challenging Terrain" 18 | description: "Project page for the science robotics paper" 19 | author: "Joonho Lee" 20 | 21 | # RSS 2.0 can be used instead of Atom by uncommenting following two lines 22 | #feed: 23 | # path: rss-feed.xml 24 | -------------------------------------------------------------------------------- /_data/settings.yml: -------------------------------------------------------------------------------- 1 | # Change 'comments' to true for Disqus comments 2 | disqus: 3 | comments: false 4 | disqus_shortname: 'blindloco' 5 | 6 | # If you are not using Google Analytics, please change 'google-ID' to an empty string 7 | google-ID: '' 8 | 9 | menu: 10 | - {name: 'Acknowledgment', folder: 'pages', file: 'Acknowlegment.html'} 11 | 12 | # Available social icons are powered by Font Awesome, so you can use any icon that they offer 13 | social: 14 | - {icon: 'youtube', link: 'https://www.youtube.com/leggedrobotics'} 15 | - {icon: 'twitter', link: 'https://twitter.com/leggedrobotics'} 16 | - {icon: 'facebook', link: 'https://www.facebook.com/leggedrobotics'} 17 | - {icon: 'instagram', link: 'https://www.instagram.com/leggedrobotics/'} 18 | #- {icon: 'rss-square', link: 'feed.xml'} 19 | # - {icon: 'rss-square', link: 'rss-feed.xml'} 20 | 21 | # Customize site text 22 | pagination: 23 | next_page: 'Newer' 24 | previous_page: 'Older' 25 | 26 | sharing_button_prompt: 'Feel free to share!' 27 | 28 | #related_posts: 'You may also enjoy...' 29 | 30 | post_date_prefix: 'Written on' 31 | -------------------------------------------------------------------------------- /_includes/disqus.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 12 | 13 | comments powered by Disqus 14 |
15 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /_includes/google-analytics.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% if page.title == "Home" %} 5 | {{ site.title }} | {{ site.description }} 6 | {% else %} 7 | {{ page.title }} | {{ site.title }} 8 | {% endif %} 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | {% feed_meta %} 18 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | {% include google-analytics.html %} 32 | 33 | 34 | {% seo %} 35 | 36 | 37 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 | 29 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% include head.html %} 5 | 6 | 7 | 8 |
9 | {% include header.html %} 10 |
11 | {{ content }} 12 |
13 | {% include footer.html %} 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Home 4 | --- 5 | 6 |
7 | {{ content }} 8 |
9 | 10 | 11 | {% if site.data.settings.disqus.comments %} 12 | {% include disqus.html %} 13 | {% endif %} 14 | -------------------------------------------------------------------------------- /_layouts/misc.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |

7 | {{ page.title }} 8 |

9 | 10 |
11 | {{ content }} 12 |
13 | 14 |
15 | -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |

7 | {{ page.title }} 8 |

9 |
10 | 11 |
12 | {{ content }} 13 |
14 | -------------------------------------------------------------------------------- /assets/css/_sass/_-sections-dir.scss: -------------------------------------------------------------------------------- 1 | // Importing Sass/SCSS partials from `sass_dir` (defaults to `_sass`) 2 | @import "base", 3 | "default", 4 | "post", 5 | "header", 6 | "footer", 7 | "code", 8 | "social-icons"; 9 | // SCSS files roughly correspond to HTML files in _includes and _layouts 10 | -------------------------------------------------------------------------------- /assets/css/_sass/_base.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Reset some basic elements 3 | */ 4 | 5 | body, h1, h2, h3, h4, h5, h6, 6 | p, blockquote, pre, hr, 7 | dl, dd, ol, ul, figure { 8 | margin: 0; 9 | padding: 0; 10 | } 11 | 12 | /* 13 | Basic styling 14 | */ 15 | 16 | /* Headings */ 17 | h1, h2, h3, h4, h5, h6 { 18 | margin-bottom: .5rem; 19 | font-weight: bold; 20 | line-height: 1.25; 21 | text-rendering: optimizeLegibility; 22 | } 23 | 24 | h1 { 25 | font-size: 2.0rem; 26 | } 27 | h2 { 28 | margin-top: 1rem; 29 | margin-bottom: 1.5rem; 30 | 31 | font-size: 1.7rem; 32 | } 33 | h3 { 34 | margin-top: 1.5rem; 35 | font-size: 1.5rem; 36 | } 37 | h4, h5 { 38 | margin-top: 1rem; 39 | margin-right: 1rem; 40 | font-size: 1rem; 41 | } 42 | h6 { 43 | margin-top: 0.25rem; 44 | margin-right: 0.25rem; 45 | font-size: 1rem; 46 | } 47 | 48 | 49 | hr.thick { 50 | border: solid; 51 | color: #f2f2f2; 52 | border-width: 2px; 53 | } 54 | 55 | hr.thick2 { 56 | border: solid; 57 | color: #f2f2f2; 58 | border-width: 6px; 59 | } 60 | 61 | 62 | /* Body */ 63 | body { 64 | font-family: $base-font-family; 65 | } 66 | body img { 67 | align: middle; 68 | margin: 5px auto auto auto; 69 | display: block; 70 | max-width: $container-width; 71 | width: 100%; 72 | } 73 | 74 | 75 | p { 76 | display: block; 77 | margin-top: 1em; 78 | margin-bottom: 1em; 79 | margin-left: 0; 80 | margin-right: 0; 81 | line-height: 1.65; 82 | font-family: $body-font-family; 83 | } 84 | 85 | /* Lists */ 86 | ul, ol, dl { 87 | margin-top: 1rem; 88 | margin-bottom: 1rem; 89 | margin-left: 1.5rem; 90 | font-family: $body-font-family; 91 | } 92 | 93 | ol li { 94 | margin-top: 1rem; 95 | margin-bottom: 1rem; 96 | margin-left: 1.5rem; 97 | } 98 | 99 | li { 100 | margin-bottom: 1rem; 101 | } 102 | 103 | dt { 104 | font-weight: bold; 105 | } 106 | dd { 107 | margin-bottom: .5rem; 108 | } 109 | 110 | /* 111 | Links 112 | */ 113 | 114 | a { 115 | text-decoration: none!important; 116 | color: $highlight-color; 117 | } 118 | 119 | /* 120 | Blockquote 121 | */ 122 | 123 | blockquote { 124 | margin: 10px 20px 10px; 125 | padding: 0px 15px; 126 | border-left: 0.25em solid #ccc; 127 | color: #999; 128 | line-height: 1.5; 129 | } 130 | 131 | /** 132 | * Tables 133 | */ 134 | table { 135 | border-collapse: collapse; 136 | margin-bottom: 30px; 137 | width: 100%; 138 | } 139 | 140 | table, th, td { 141 | border: 1px solid black; 142 | } 143 | th, td { 144 | padding: 15px; 145 | text-align: left; 146 | } 147 | -------------------------------------------------------------------------------- /assets/css/_sass/_code.scss: -------------------------------------------------------------------------------- 1 | code, 2 | pre { 3 | font-family: $code-font-family 4 | } 5 | code { 6 | padding: .25em .5em; 7 | font-size: .8rem; 8 | background-color: #f5f5f5; 9 | border-radius: 3px; 10 | } 11 | pre { 12 | display: block; 13 | margin-top: 0; 14 | margin-bottom: 1rem; 15 | padding: 1rem; 16 | font-size: .8rem; 17 | line-height: 1.4; 18 | white-space: pre; 19 | white-space: pre-wrap; 20 | word-break: break-all; 21 | word-wrap: break-word; 22 | background-color: #f5f5f5; 23 | } 24 | pre code { 25 | padding: 0; 26 | font-size: 100%; 27 | color: inherit; 28 | background-color: transparent; 29 | } 30 | 31 | /* Pygments via Jekyll */ 32 | .highlight { 33 | margin-bottom: 1rem; 34 | border-radius: 4px; 35 | } 36 | .highlight pre { 37 | margin-bottom: 0; 38 | } 39 | 40 | /* Gist via GitHub Pages */ 41 | .gist .gist-file { 42 | font-family: $code-font-family !important; 43 | } 44 | .gist .markdown-body { 45 | padding: 15px; 46 | } 47 | .gist pre { 48 | padding: 0; 49 | background-color: transparent; 50 | } 51 | .gist .gist-file .gist-data { 52 | font-size: .8rem !important; 53 | line-height: 1.4; 54 | } 55 | .gist code { 56 | padding: 0; 57 | color: inherit; 58 | background-color: transparent; 59 | border-radius: 0; 60 | } 61 | -------------------------------------------------------------------------------- /assets/css/_sass/_default.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Site container 3 | */ 4 | 5 | .container { 6 | width: $container-width; 7 | margin-left: auto; 8 | margin-right: auto; 9 | } 10 | .container a { 11 | text-decoration: underline; 12 | } 13 | .posts-wrapper { 14 | padding-top: $header-thickness+10px; 15 | margin: auto; 16 | display: block; 17 | width: $container-width - 20px; 18 | } 19 | .posts-wrapper h1 { 20 | margin: 20px 0px 5px; 21 | } 22 | @media (max-width: $container-width) { 23 | .container { 24 | width: 95vw; 25 | margin-left: auto; 26 | margin-right: auto; 27 | } 28 | .posts-wrapper { 29 | padding-top: $header-thickness+10px; 30 | margin: auto; 31 | display: block; 32 | width: 95vw; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /assets/css/_sass/_footer.scss: -------------------------------------------------------------------------------- 1 | .footer { 2 | background: white; 3 | color: $brand-color; 4 | text-align: center; 5 | min-height: 56px; 6 | line-height: 45px; 7 | width: $container-width; 8 | } 9 | .footer a { 10 | color: $brand-color; 11 | padding: 0px 10px 0px; 12 | text-decoration: none; 13 | } 14 | @media (max-width: $container-width) { 15 | .footer { 16 | background: white; 17 | color: $brand-color; 18 | text-align: center; 19 | min-height: 56px; 20 | line-height: 45px; 21 | width: 95vw; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /assets/css/_sass/_header.scss: -------------------------------------------------------------------------------- 1 | .site-header { 2 | min-height: 50px; 3 | width: $container-width; 4 | position: fixed; 5 | font-size: 30; 6 | //background-color: #ededed; 7 | background-color: white; 8 | box-shadow: 0 5px 6px -6px #bbb; 9 | z-index: 100; 10 | } 11 | 12 | 13 | @media (max-width: $container-width) { 14 | .site-header { 15 | min-height: 50px; 16 | width: 95vw; 17 | position: fixed; 18 | //background-color: #ededed; 19 | background-color: white; 20 | box-shadow: 0 5px 6px -6px #bbb; 21 | z-index: 100; 22 | } 23 | } 24 | .site-header a { 25 | text-decoration: none; 26 | color: $brand-color 27 | } 28 | .site-title { 29 | font-size: 24px; 30 | font-weight: 400; 31 | line-height: 24px; 32 | margin-bottom: 0; 33 | margin-top: 20px; 34 | padding-left: 10px; 35 | float: left; 36 | } 37 | .menu-list { 38 | font-size: 30px; 39 | line-height: $header-thickness; 40 | float: right; 41 | } 42 | .menu-link { 43 | padding: 5px 10px; 44 | } 45 | 46 | /* 47 | Responsiveness with a dropdown menu 48 | */ 49 | 50 | //@media (min-width: $container-width) { 51 | // .dropbtn { 52 | // display: none; 53 | // 54 | // } 55 | // .dropdown-content { 56 | // display: none; 57 | // } 58 | //} 59 | @media (max-width: $container-width) { 60 | //.menu-list { 61 | // display: none; 62 | //} 63 | .site-title { 64 | display: none; 65 | }} 66 | .dropbtn { 67 | background-color: white; 68 | color: black; 69 | padding: 16px; 70 | margin-top: 4px; 71 | font-size: 25px; 72 | border: none; 73 | cursor: pointer; 74 | } 75 | .dropdown { 76 | position: relative; 77 | display: inline-block; 78 | } 79 | .dropdown-content { 80 | display: none; 81 | position: absolute; 82 | background-color: #f9f9f9; 83 | min-width: 160px; 84 | box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); 85 | z-index: 1; 86 | //right:0; 87 | } 88 | .dropdown-content a { 89 | color: black; 90 | padding: 12px 16px; 91 | text-decoration: none; 92 | display: block; 93 | } 94 | .dropdown-content a:hover { 95 | background-color: #f1f1f1 96 | } 97 | .dropdown:hover .dropdown-content { 98 | display: block; 99 | } 100 | .dropdown:hover .dropbtn { 101 | background-color: #f1f1f1; 102 | } 103 | 104 | -------------------------------------------------------------------------------- /assets/css/_sass/_post.scss: -------------------------------------------------------------------------------- 1 | .page-content { 2 | width: 600px; 3 | display: block; 4 | margin-left: auto; 5 | margin-right: auto; 6 | margin-top: 10px; 7 | margin-bottom: 10px; 8 | } 9 | .videoWrapper { 10 | position: relative; 11 | padding-bottom: 56.25%; /* 16:9 */ 12 | height: 0; 13 | } 14 | .videoWrapper iframe { 15 | position: absolute; 16 | top: 0; 17 | left: 0; 18 | width: 100%; 19 | height: 100%; 20 | } 21 | 22 | .figure { 23 | opacity: 1; 24 | display: table; 25 | height: auto; 26 | transition: .5s ease; 27 | backface-visibility: hidden; 28 | margin-left: auto; 29 | margin-right: auto; 30 | } 31 | 32 | .caption { 33 | transition: .5s ease; 34 | opacity: 0.6; 35 | position: absolute; 36 | bottom: 5px; 37 | left: 5px; 38 | background-color: $light-gray-color; 39 | color: black; 40 | margin-top: 0.5rem; 41 | padding-top: 0.25rem; 42 | padding-bottom: 0.25rem; 43 | padding-right: 0.5rem; 44 | font-size: 1.2rem; 45 | font-weight: bold; 46 | line-height: 1.5; 47 | text-rendering: optimizeLegibility; 48 | } 49 | figcaption { 50 | background-color: $light-gray-color; 51 | color: black; 52 | text-align: center; 53 | //display: table-caption; 54 | caption-side: bottom; 55 | padding: 10px; 56 | font-size: 1.2rem; 57 | font-weight: bold; 58 | line-height: 1.25; 59 | text-rendering: optimizeLegibility; 60 | } 61 | 62 | .caption2 { 63 | transition: .5s ease; 64 | opacity: 1.0; 65 | position: absolute; 66 | bottom: 1px; 67 | left: 5px; 68 | background-color: black; 69 | color: white; 70 | } 71 | 72 | .figure-container { 73 | position: relative; 74 | } 75 | 76 | .figure-container:hover .figure{ 77 | opacity: 0.3 78 | } 79 | 80 | .figure-container:hover .caption{ 81 | position: absolute; 82 | padding-left: 25px; 83 | opacity: 1.0; 84 | } 85 | 86 | 87 | .paper-title { 88 | text-align-last: left; 89 | padding: 10px 0px 5px; 90 | // font-weight: 500; 91 | font-size: 2.0em; 92 | font-weight: bold; 93 | line-height: 1.5; 94 | text-rendering: optimizeLegibility; 95 | } 96 | 97 | .paper-authors { 98 | text-align-last: left; 99 | font-size: 23px; 100 | font-weight: 400; 101 | line-height: 23px; 102 | color: $gray-color; 103 | margin-bottom: 25px; 104 | text-rendering: optimizeLegibility; 105 | } 106 | .paper-affiliations { 107 | text-align-last: left; 108 | font-size: 20px; 109 | font-weight: 300; 110 | line-height: 18px; 111 | color: $gray-color; 112 | margin-bottom: 15px; 113 | text-decoration: none; 114 | text-rendering: optimizeLegibility; 115 | 116 | } 117 | .paper-paragraph { 118 | text-align: justify; 119 | font-size: 23px; 120 | // font-weight: 300; 121 | line-height: 25px; 122 | text-rendering: optimizeLegibility; 123 | } 124 | 125 | //hr { 126 | // display: block; 127 | // margin-top: 0.5em; 128 | // margin-bottom: 0.5em; 129 | // margin-left: auto; 130 | // margin-right: auto; 131 | // //border-style: inset; 132 | // border-width: 2px; 133 | //} 134 | 135 | 136 | .post-date { 137 | display: block; 138 | margin-bottom: 1rem; 139 | color: #707070; 140 | font-size:1.5rem; 141 | } 142 | 143 | 144 | @media (max-width: $container-width) { 145 | .page-content { 146 | width: 60vw; 147 | display: block; 148 | margin-left: auto; 149 | margin-right: auto; 150 | margin-top: 10px; 151 | margin-bottom: 10px; 152 | } 153 | .featured-video { 154 | position: relative; 155 | text-align: center; 156 | color: white; 157 | } 158 | } 159 | @media (max-width: $tablet-width) { 160 | .page-content { 161 | width: 95vw; 162 | display: block; 163 | margin-left: auto; 164 | margin-right: auto; 165 | margin-top: 10px; 166 | margin-bottom: 10px; 167 | } 168 | .featured-image img { 169 | align: middle; 170 | margin: 5px auto 25px; 171 | display: block; 172 | max-width: 95vw; 173 | } 174 | } 175 | .post-share { 176 | padding-bottom: 1rem; 177 | } 178 | .sharing-icons a { 179 | padding-right: 10px; 180 | } -------------------------------------------------------------------------------- /assets/css/_sass/_social-icons.scss: -------------------------------------------------------------------------------- 1 | $icon-transition-time: 1.0s; 2 | $envelope-color: #f39c12; 3 | $twitter-color: #00aced; 4 | $instagram-color: #375989; 5 | $github-color: #343434; 6 | $linkedin-color: #0073a4; 7 | $facebook-color: #3d5b99; 8 | $google-color: #e64a41; 9 | $pinterest-color: #bd081c; 10 | $medium-color: #00AB6C; 11 | $codepen-color: black; 12 | $rss-color: #ff6600; 13 | 14 | @mixin social-media-icon($color, $transition){ 15 | -webkit-transition: $transition; 16 | -o-transition: $transition; 17 | -ms-transition: $transition; 18 | -moz-transition: $transition; 19 | transition: $transition; 20 | &:hover{ 21 | color: $color; 22 | } 23 | } 24 | 25 | .fa-envelope { 26 | padding: 5px; 27 | @include social-media-icon($envelope-color, $icon-transition-time); 28 | } 29 | 30 | .fa-twitter { 31 | padding: 5px; 32 | @include social-media-icon($twitter-color, $icon-transition-time); 33 | } 34 | 35 | .fa-instagram { 36 | padding: 5px; 37 | @include social-media-icon($instagram-color, $icon-transition-time); 38 | } 39 | 40 | .fa-github { 41 | padding: 5px; 42 | @include social-media-icon($github-color, $icon-transition-time); 43 | } 44 | 45 | .fa-linkedin { 46 | padding: 5px; 47 | @include social-media-icon($linkedin-color, $icon-transition-time); 48 | } 49 | 50 | .fa-facebook { 51 | padding: 5px; 52 | @include social-media-icon($facebook-color, $icon-transition-time); 53 | } 54 | 55 | .fa-google-plus { 56 | padding: 5px; 57 | @include social-media-icon($google-color, $icon-transition-time); 58 | } 59 | 60 | .fa-pinterest { 61 | padding: 5px; 62 | @include social-media-icon($pinterest-color, $icon-transition-time); 63 | } 64 | 65 | .fa-medium { 66 | padding: 5px; 67 | @include social-media-icon($medium-color, $icon-transition-time); 68 | } 69 | 70 | .fa-codepen { 71 | padding: 5px; 72 | @include social-media-icon($codepen-color, $icon-transition-time); 73 | } 74 | 75 | .fa-rss-square { 76 | padding: 5px; 77 | @include social-media-icon($rss-color, $icon-transition-time); 78 | } 79 | -------------------------------------------------------------------------------- /assets/css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # Front matter comment to ensure Jekyll properly reads file. 3 | --- 4 | 5 | /* 6 | Site variables 7 | */ 8 | 9 | $base-font-family: 'Roboto', sans-serif; 10 | 11 | $body-font-family: 'Roboto', sans-serif; 12 | 13 | $code-font-family: "Source Code Pro", monospace; 14 | 15 | $brand-color: black; 16 | 17 | $highlight-color: #236BB0; 18 | $gray-color: #595959; 19 | $light-gray-color: #f2f2f2; 20 | 21 | $text-color: black; 22 | 23 | $container-width: 1000px; 24 | 25 | $tablet-width: 600px; 26 | 27 | $phone-width: 600px; 28 | 29 | $header-thickness: 56px; 30 | 31 | @import "_sass/-sections-dir"; 32 | -------------------------------------------------------------------------------- /assets/css/syntax.css: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffc; } 2 | .highlight .c { color: #999; } /* Comment */ 3 | .highlight .err { color: #a00; background-color: #faa } /* Error */ 4 | .highlight .k { color: #069; } /* Keyword */ 5 | .highlight .o { color: #555 } /* Operator */ 6 | .highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #099 } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999; } /* Comment.Single */ 9 | .highlight .cs { color: #999; } /* Comment.Special */ 10 | .highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */ 11 | .highlight .ge { font-style: italic } /* Generic.Emph */ 12 | .highlight .gr { color: #f00 } /* Generic.Error */ 13 | .highlight .gh { color: #030; } /* Generic.Heading */ 14 | .highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */ 15 | .highlight .go { color: #aaa } /* Generic.Output */ 16 | .highlight .gp { color: #009; } /* Generic.Prompt */ 17 | .highlight .gs { } /* Generic.Strong */ 18 | .highlight .gu { color: #030; } /* Generic.Subheading */ 19 | .highlight .gt { color: #9c6 } /* Generic.Traceback */ 20 | .highlight .kc { color: #069; } /* Keyword.Constant */ 21 | .highlight .kd { color: #069; } /* Keyword.Declaration */ 22 | .highlight .kn { color: #069; } /* Keyword.Namespace */ 23 | .highlight .kp { color: #069 } /* Keyword.Pseudo */ 24 | .highlight .kr { color: #069; } /* Keyword.Reserved */ 25 | .highlight .kt { color: #078; } /* Keyword.Type */ 26 | .highlight .m { color: #f60 } /* Literal.Number */ 27 | .highlight .s { color: #d44950 } /* Literal.String */ 28 | .highlight .na { color: #4f9fcf } /* Name.Attribute */ 29 | .highlight .nb { color: #366 } /* Name.Builtin */ 30 | .highlight .nc { color: #0a8; } /* Name.Class */ 31 | .highlight .no { color: #360 } /* Name.Constant */ 32 | .highlight .nd { color: #99f } /* Name.Decorator */ 33 | .highlight .ni { color: #999; } /* Name.Entity */ 34 | .highlight .ne { color: #c00; } /* Name.Exception */ 35 | .highlight .nf { color: #c0f } /* Name.Function */ 36 | .highlight .nl { color: #99f } /* Name.Label */ 37 | .highlight .nn { color: #0cf; } /* Name.Namespace */ 38 | .highlight .nt { color: #2f6f9f; } /* Name.Tag */ 39 | .highlight .nv { color: #033 } /* Name.Variable */ 40 | .highlight .ow { color: #000; } /* Operator.Word */ 41 | .highlight .w { color: #bbb } /* Text.Whitespace */ 42 | .highlight .mf { color: #f60 } /* Literal.Number.Float */ 43 | .highlight .mh { color: #f60 } /* Literal.Number.Hex */ 44 | .highlight .mi { color: #f60 } /* Literal.Number.Integer */ 45 | .highlight .mo { color: #f60 } /* Literal.Number.Oct */ 46 | .highlight .sb { color: #c30 } /* Literal.String.Backtick */ 47 | .highlight .sc { color: #c30 } /* Literal.String.Char */ 48 | .highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */ 49 | .highlight .s2 { color: #c30 } /* Literal.String.Double */ 50 | .highlight .se { color: #c30; } /* Literal.String.Escape */ 51 | .highlight .sh { color: #c30 } /* Literal.String.Heredoc */ 52 | .highlight .si { color: #a00 } /* Literal.String.Interpol */ 53 | .highlight .sx { color: #c30 } /* Literal.String.Other */ 54 | .highlight .sr { color: #3aa } /* Literal.String.Regex */ 55 | .highlight .s1 { color: #c30 } /* Literal.String.Single */ 56 | .highlight .ss { color: #fc3 } /* Literal.String.Symbol */ 57 | .highlight .bp { color: #366 } /* Name.Builtin.Pseudo */ 58 | .highlight .vc { color: #033 } /* Name.Variable.Class */ 59 | .highlight .vg { color: #033 } /* Name.Variable.Global */ 60 | .highlight .vi { color: #033 } /* Name.Variable.Instance */ 61 | .highlight .il { color: #f60 } /* Literal.Number.Integer.Long */ 62 | 63 | .css .o, 64 | .css .o + .nt, 65 | .css .nt + .nt { color: #999; } 66 | -------------------------------------------------------------------------------- /assets/img/figure1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leggedrobotics/rl-blindloco/1d90a1cd96f805c56f0eaab16d41bbf15149bcec/assets/img/figure1.png -------------------------------------------------------------------------------- /assets/img/figure2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leggedrobotics/rl-blindloco/1d90a1cd96f805c56f0eaab16d41bbf15149bcec/assets/img/figure2.png -------------------------------------------------------------------------------- /assets/paper/2020_science_robotics_lee_locomotion.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leggedrobotics/rl-blindloco/1d90a1cd96f805c56f0eaab16d41bbf15149bcec/assets/paper/2020_science_robotics_lee_locomotion.pdf -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leggedrobotics/rl-blindloco/1d90a1cd96f805c56f0eaab16d41bbf15149bcec/favicon.ico -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home 3 | title: Learning Quadrupedal Locomotion over Challenging Terrain 4 | author: Joonho Lee 5 | --- 6 | 7 |
8 | compilation-of-anymal-in-the-wild 9 |
10 | 11 |
12 | {{ page.title }} 13 |
14 | 15 | 16 |
17 | Joonho Lee1,*, 18 | Jemin Hwangbo1,2,†, 19 | Lorenz Wellhausen1, 20 | Vladlen Koltun3, 21 | and Marco Hutter1 22 |
23 | 24 |
25 | 1 Robotic Systems Lab, ETH Zurich 26 |
2 Robotics and Artificial Intelligence Lab, KAIST 27 |
3 Intelligent Systems Lab, Intel 28 |
29 | 30 |
Substantial part of the work was carried out during his stay at 1 31 |
* Corresponding author: jolee@ethz.ch 32 |
33 |
34 | 35 | 36 |

Paper links

37 | 38 | 39 |

40 | Science Robotics Vol.5 eabc5986 (2020) 41 |
Author's version PDF 42 |

43 | 44 | 45 |
46 | 47 |

ABSTRACT

48 |

49 | Legged locomotion can extend the operational domain of robots to some of the most challenging environments 50 | on Earth. However, conventional controllers for legged locomotion are based on elaborate state machines that 51 | explicitly trigger the execution of motion primitives and reflexes. These designs have increased in complexity but 52 | fallen short of the generality and robustness of animal locomotion. Here, we present a robust controller for blind 53 | quadrupedal locomotion in challenging natural environments. Our approach incorporates proprioceptive feedback 54 | in locomotion control and demonstrates zero-shot generalization from simulation to natural environments. The 55 | controller is trained by reinforcement learning in simulation. The controller is driven by a neural network policy 56 | that acts on a stream of proprioceptive signals. The controller retains its robustness under conditions that were 57 | never encountered during training: deformable terrains such as mud and snow, dynamic footholds such as rubble, 58 | and overground impediments such as thick vegetation and gushing water. The presented work indicates that 59 | robust locomotion in natural environments can be achieved by training in simple domains. 60 |

61 | 62 | 63 |
64 |
65 | Summary video 66 |
67 | 68 |
69 | 72 |
73 | 74 | 75 |
76 |
77 | 78 |
79 |

Zero-shot generalization to unknown environments

80 |
81 | 82 |
83 | Figure 1. A number of specific deployments 84 | (paper Figure 2) 85 |
86 |
87 | figure2 88 |
89 | 90 | 91 |

92 | The presented controller has been deployed in diverse natural environments. 93 | These include steep mountain trails, creeks with running water, mud, thick vegetation, loose rubble, 94 | snow-covered 95 | hills, and a damp forest. 96 | A number of specific scenarios are further highlighted in Fig. 1A-F. These environments have 97 | characteristics that the policy does not experience during training. The terrains can deform and crumble, with 98 | significant variation of material properties over the surface. The robot's legs are subjected to frequent 99 | disturbances due to vegetation, rubble, and sticky mud. 100 | Existing terrain estimation pipelines that use cameras or LiDAR fail in environments 101 | with 102 | snow (Fig. 1A), water (Fig. 1C), 103 | or dense vegetation (Fig. 1F). 104 | Our controller does not rely on exteroception and is immune to such failure. 105 | The controller learns omnidirectional locomotion based on a history of proprioceptive observations and 106 | is robust in zero-shot deployment on terrains with characteristics that were never experienced during training. 107 |

108 | 109 |

110 | Our controller was used by the Cerberus team for the DARPA Subterranean Challenge Urban Circuit 111 | (Fig. 1G). 112 | It replaced a model-based controller that had been employed used by the team in the past. 113 | The objective of the competition is to develop robotic systems that rapidly map, navigate, 114 | and search complex underground environments, including tunnels, urban underground, and cave 115 | networks. The human operators are not allowed to assist the robots during the competition physically; 116 | only teleoperation is allowed. Accordingly, the locomotion controller needs to perform without failure 117 | over extended mission durations. 118 | The presented controller drove two ANYmal-B robots in four missions of 60 minutes. The 119 | controller exhibited a zero failure rate throughout the competition. A steep staircase that was traversed 120 | by one of the robots during the competition is shown in Fig. 1G. 121 |

122 | 123 |
124 | 125 |
126 |

Foot-trapping reflex

127 |
128 | 129 |
130 | Movie 1. Step experiment 131 | (paper Movie S3) 132 |
133 |
134 | 137 |
138 | 139 |

140 | The learned controller manifests a foot-trapping reflex, as shown in Movie 1. 141 | The policy identifies the trapping of the foot purely from proprioceptive observations and lifts the foot over 142 | the obstacle. 143 | Such reflexes were not specified in any way during training: they developed adaptively. 144 | This distinguishes the presented approach from conventional controller design methods, 145 | which explicitly build in such reflexes and orchestrate their execution by a higher-level state machine. 146 |

147 | 148 |
149 | 150 |
151 |

Robustness to Model-mismatch

152 |
153 | 154 |
155 | Movie 2. Payload experiment 156 | (paper Movie S4) 157 |
158 |
159 | 162 |
163 | 164 |

165 | We tested the controllers in the presence of substantial model mismatch. 166 | We attached a 10 kg payload. 167 | This payload is 22.7 % of the total weight of the robot, and was never simulated during training. 168 | As shown in Movie 2, the presented controller can still traverse steps up to 13.4 cm 169 | despite the model mismatch. 170 | The baseline is incapable of traversing any steps under any command speed with the payload. 171 |

172 | 173 |
174 | 175 |
176 |

Robustness to Foot Slippage

177 |
178 |
179 | Movie 3. Foot Slippage experiment 180 | (paper Movie S5) 181 |
182 |
183 | 186 |
187 | 188 |

189 | Next we test robustness to foot slippage. 190 | To introduce slippage, we used a moistened whiteboard. 191 | The results are shown in Movie 3. 192 | The baseline quickly loses balance, aggressively swings the legs, and falls. In contrast, the presented 193 | controller adapts to the slippery terrain and successfully locomotes in the commanded direction. 194 |

195 | 196 |
197 |

198 | 199 |

200 |
201 |
202 |

Acknowledgment

203 |

204 | 205 | Author contributions: J.L. formulated 206 | the main idea of the training and control methods, implemented the controller, set up the 207 | simulation, and trained control policies. J.L. performed the indoor experiments. J.H. 208 | contributed in setting up the simulation. J.L. and L.W. performed outdoor experiments 209 | together. J.L., J.H., L.W., M.H., and V.K. refined ideas, contributed in the experiment design, 210 | and analyzed the data. 211 |

212 |

213 | Funding: The project was funded, in part, by the Intel 214 | Network on Intelligent Systems, the Swiss National Science Foundation (SNF) through the 215 | National Centre of Competence in Research Robotics, the European Research Council (ERC) 216 | under the European Union’s Horizon 2020 research and innovation programme grant 217 | agreement no 852044 and no 780883. The work has been conducted as part of ANYmal 218 | Research, a community to advance legged robotics. 219 | 220 | 221 | 222 | 223 |

224 |
-------------------------------------------------------------------------------- /pages/Acknowlegment.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: misc 3 | title: Acknowlegment 4 | --- 5 | -------------------------------------------------------------------------------- /rss-feed.xml: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | 6 | {{ site.title | xml_escape }} 7 | {% if site.description %}{{ site.description | xml_escape }}{% endif %} 8 | {{ site.github.url }} 9 | 10 | {% for post in site.posts limit:10 %} 11 | 12 | {{ post.title | xml_escape }} 13 | {% if post.author %} 14 | {{ post.author | xml_escape }} 15 | {% endif %} 16 | {% if post.excerpt %} 17 | {{ post.excerpt | xml_escape }} 18 | {% else %} 19 | {{ post.content | xml_escape }} 20 | {% endif %} 21 | {{ post.date | date_to_rfc822 }} 22 | {{ site.url }}{{ post.url }} 23 | {{ site.url }}{{ post.url }} 24 | 25 | {% endfor %} 26 | 27 | 28 | --------------------------------------------------------------------------------