diff --git a/.gitignore b/.gitignore index 3b43a7cc..cac2d219 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,5 @@ site -# Local design prototype (contains proprietary fonts, not meant to be published) -RoboStack Website/ - # pixi environments .pixi *.egg-info diff --git a/README.md b/README.md index 396d1cbf..b7218208 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,9 @@ # robostack.github.io -Source files for the [robostack.github.io](https://robostack.github.io/) website. - -The site is built with [Zensical](https://zensical.org/) and has three -sections, linked from the common header: - -- the frontpage - plain HTML in `overrides/home.html`, registered by `docs/index.md` -- the package page - plain HTML in `overrides/packages.html`, registered by `docs/packages/index.md` -- the documentation - the Markdown files in `docs/` - -The header itself is the customized partial in `overrides/partials/header.html`: -the logo links to the frontpage, and the Packages and Documentation links sit -next to it. +Source files for the [robostack.github.io](https://robostack.github.io/) documentation website. # Run it locally - ``` pixi run serve ``` - Open server on http://127.0.0.1:8000/ diff --git a/docs/GettingStarted.md b/docs/GettingStarted.md index 5ca7cbd9..2f69a43c 100644 --- a/docs/GettingStarted.md +++ b/docs/GettingStarted.md @@ -386,7 +386,7 @@ After installation, you should test if you are able to run `rviz`/`rviz2` and ot rviz2 ``` - If you run into any issues or for any frequently asked questions, you can check the [FAQ page](FAQ.md) + If you run into any issues or for any frequently asked questions, you can check the [FAQ page](https://robostack.github.io/FAQ.html) ## Updating Updating all packages in your environment is as easy as: @@ -423,7 +423,7 @@ After installation, you should test if you are able to run `rviz`/`rviz2` and ot rviz2 ``` - If you run into any issues or for any frequently asked questions, you can check the [FAQ page](FAQ.md) + If you run into any issues or for any frequently asked questions, you can check the [FAQ page](https://robostack.github.io/FAQ.html) ## Updating Updating all packages in your environment is as easy as: @@ -479,7 +479,7 @@ After installation, you should test if you are able to run `rviz`/`rviz2` and ot rviz2 ``` - If you run into any issues or for any frequently asked questions, you can check the [FAQ page](FAQ.md) + If you run into any issues or for any frequently asked questions, you can check the [FAQ page](https://robostack.github.io/FAQ.html) ## Updating Updating all packages in your environment is as easy as: diff --git a/docs/Overview.md b/docs/Overview.md deleted file mode 100644 index 8c090d48..00000000 --- a/docs/Overview.md +++ /dev/null @@ -1,43 +0,0 @@ -# RoboStack -Welcome to RoboStack - a bundling of the Robot Operating System (ROS) by Open Robotics for Linux, Mac and Windows using the Conda package manager. We provide ROS packages for ROS1 Noetic and ROS2 Humble (as well as unsupported Melodic/Foxy/Galactic packages), as well as a variety of ROS related plugins for Jupyter notebooks. - -If you use RoboStack in an academic article, please cite the following [paper](https://arxiv.org/abs/2104.12910): -```BibTeX -@article{FischerRAM2021, - title={A RoboStack Tutorial: Using the Robot Operating System Alongside the Conda and Jupyter Data Science Ecosystems}, - author={Tobias Fischer and Wolf Vollprecht and Silvio Traversaro and Sean Yen and Carlos Herrero and Michael Milford}, - journal={IEEE Robotics and Automation Magazine}, - year={2021}, - doi={10.1109/MRA.2021.3128367}, -} -``` - -## Why RoboStack? -- ROS on *any* platform: Linux (any distribution, new and old), MacOS and Windows -- Easy installation of ROS side-by-side with PyTorch, Tensorflow & many more (very recent) machine learning and computer vision algorithms in a Conda environment -- No root access required - install ROS on shared workstations & high-performance computers -- Reproducible environments and reproducible robotics research -- RViz-like visualizations in the browser *without* a ROS installation -- Control your robot in Jupyter notebooks & ROS integration with Jupyterlab -- Easy package creation - creating a Conda package is much easier than creating Debian packages -- Cross-platform CI for ROS packages -- ... - -Here you can see RViz on Linux Fedora, MacOS and Windows: -![0*CWMpP2kGWulIQeHf](https://user-images.githubusercontent.com/5497832/129636748-67ece961-f762-4440-a95f-c097012fac3f.jpg) - -## How to get started & install RoboStack? -See [Getting Started](GettingStarted.md) - -## Which packages are available? -Please see the "Available Packages" links in the menu. If a package is not yet available for a given distribution/platforms, simply open a pull request and we will do our best to get it up any running. - -## How to get involved? - -We are very keen to involve more collaborators. Join us on the [`robotics` channel on `prefix.dev`'s discord](https://discord.gg/kKV8ZxyzY4) and check out our [Contribution guidelines](Contributing.md). - -## Overview video -Check out our IROS 2022 presentation for a 7 minute teaser: -
- -
\ No newline at end of file diff --git a/docs/extra.css b/docs/extra.css index d5964694..c7d41f5f 100644 --- a/docs/extra.css +++ b/docs/extra.css @@ -16,31 +16,7 @@ border: 0; } .md-grid { - max-width: 1640px; -} - -/* Section links (Packages, Documentation) inside the header bar */ -.rs-header-links { - display: flex; - align-items: center; - gap: 1.2rem; - margin: 0 0.6rem; - white-space: nowrap; -} -.rs-header-links a { - color: currentColor; - font-size: 0.7rem; - opacity: 0.7; - transition: opacity 125ms; -} -.rs-header-links a:hover { - opacity: 1; - text-decoration: none; -} -@media screen and (max-width: 59.9844em) { - .rs-header-links { - display: none; - } + max-width: 1640px; } diff --git a/docs/index.md b/docs/index.md index 3fb1f8ed..2a6ab6ff 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,43 @@ ---- -template: home.html -hide: - - navigation - - toc ---- +# RoboStack +Welcome to RoboStack - a bundling of the Robot Operating System (ROS) by Open Robotics for Linux, Mac and Windows using the Conda package manager. We provide ROS packages for ROS1 Noetic and ROS2 Humble (as well as unsupported Melodic/Foxy/Galactic packages), as well as a variety of ROS related plugins for Jupyter notebooks. + +If you use RoboStack in an academic article, please cite the following [paper](https://arxiv.org/abs/2104.12910): +```BibTeX +@article{FischerRAM2021, + title={A RoboStack Tutorial: Using the Robot Operating System Alongside the Conda and Jupyter Data Science Ecosystems}, + author={Tobias Fischer and Wolf Vollprecht and Silvio Traversaro and Sean Yen and Carlos Herrero and Michael Milford}, + journal={IEEE Robotics and Automation Magazine}, + year={2021}, + doi={10.1109/MRA.2021.3128367}, +} +``` + +## Why RoboStack? +- ROS on *any* platform: Linux (any distribution, new and old), MacOS and Windows +- Easy installation of ROS side-by-side with PyTorch, Tensorflow & many more (very recent) machine learning and computer vision algorithms in a Conda environment +- No root access required - install ROS on shared workstations & high-performance computers +- Reproducible environments and reproducible robotics research +- RViz-like visualizations in the browser *without* a ROS installation +- Control your robot in Jupyter notebooks & ROS integration with Jupyterlab +- Easy package creation - creating a Conda package is much easier than creating Debian packages +- Cross-platform CI for ROS packages +- ... + +Here you can see RViz on Linux Fedora, MacOS and Windows: +![0*CWMpP2kGWulIQeHf](https://user-images.githubusercontent.com/5497832/129636748-67ece961-f762-4440-a95f-c097012fac3f.jpg) + +## How to get started & install RoboStack? +See [Getting Started](https://robostack.github.io/GettingStarted.html) + +## Which packages are available? +Please see the "Available Packages" links in the menu. If a package is not yet available for a given distribution/platforms, simply open a pull request and we will do our best to get it up any running. + +## How to get involved? + +We are very keen to involve more collaborators. Join us on the [`robotics` channel on `prefix.dev`'s discord](https://discord.gg/kKV8ZxyzY4) and check out our [Contribution guidelines](https://robostack.github.io/Contributing.html). + +## Overview video +Check out our IROS 2022 presentation for a 7 minute teaser: +
+ +
\ No newline at end of file diff --git a/docs/packages/index.md b/docs/packages/index.md deleted file mode 100644 index 0c083798..00000000 --- a/docs/packages/index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -template: packages.html -title: Packages -hide: - - navigation - - toc ---- diff --git a/docs/static/colors_and_type.css b/docs/static/colors_and_type.css deleted file mode 100644 index a9786d0e..00000000 --- a/docs/static/colors_and_type.css +++ /dev/null @@ -1,201 +0,0 @@ -/* ========================================================================== - RoboStack - Colors & Type - Design tokens adapted from the prefix.dev / Pixi theme. - Lora stands in for the proprietary Moranga display font, whose files - are not shipped with this repository. Lora's lightest weight is 400, - so font-weight: 300 declarations render at 400. - ========================================================================== */ - -@import url("https://fonts.googleapis.com/css2?family=Lora:wght@400;500;600&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Caveat:wght@400;600&family=DM+Mono:wght@400;500&display=swap"); - -:root { - /* ---------- Brand ---------- */ - --rs-primary: #ffd432; /* yellow */ - --rs-primary-alt: #ffca16; /* yellow border / hover */ - --rs-secondary: #5773ff; /* link blue */ - --rs-good: #70c038; - --rs-bad: #ff6b38; - --rs-ink: #001d38; /* near-black navy - the "text" color */ - --rs-ink-deep: #000f24; - - /* ---------- Warm neutrals (the cream/paper tones) ---------- */ - --rs-cream-50: #f8f6f2; /* page bg */ - --rs-cream-100: #f1ede4; /* card borders, rails */ - --rs-cream-200: #e2e2df; - --rs-cream-300: #b5b7ba; - --rs-cream-400: #8b8e93; - --rs-cream-500: #777a7f; - --rs-cream-600: #62656a; - --rs-cream-700: #383d3f; - --rs-cream-800: #2b2d2f; - --rs-cream-900: #191910; - - /* ---------- Dark-mode neutrals ---------- */ - --rs-dark-50: #f8f6f2; - --rs-dark-100: #f1ede4; - --rs-dark-200: #dee0e3; - --rs-dark-300: #b2b7bd; - --rs-dark-400: #868e93; - --rs-dark-500: #5e656e; - --rs-dark-600: #383d42; - --rs-dark-700: #181f25; /* card bg in dark */ - --rs-dark-800: #111518; - --rs-dark-900: #101519; /* page bg in dark */ - - /* ---------- Semantic - light theme (default) ---------- */ - --fg-1: var(--rs-ink); /* primary text */ - --fg-2: var(--rs-cream-600); /* secondary / muted */ - --fg-3: var(--rs-cream-400); /* placeholder / disabled */ - --fg-link: #3957ff; - --fg-on-brand: var(--rs-ink); /* text on yellow */ - - --bg-page: var(--rs-cream-50); /* #f8f6f2 */ - --bg-surface: #ffffff; /* cards */ - --bg-inset: var(--rs-cream-100); /* rails, code-block backdrops */ - --bg-brand: var(--rs-primary); /* big yellow blocks */ - - --border-1: var(--rs-cream-100); /* default 1px card border */ - --border-2: var(--rs-cream-200); - --border-brand: var(--rs-primary-alt); - - /* ---------- Elevation / shadows ---------- */ - --shadow-card: 0 4px 8px 0 rgba(59, 61, 63, 0.02); - --shadow-soft: 0 0 40px 0 rgba(0, 29, 56, 0.06); - --shadow-hover-yellow: 5px 5px var(--rs-primary), 10px 10px #fff9d6; - - /* ---------- Radii ---------- */ - --radius-xs: 6px; - --radius-sm: 8px; - --radius-md: 12px; /* default for buttons, inputs */ - --radius-lg: 16px; /* cards */ - --radius-xl: 24px; - --radius-2xl: 32px; /* large feature cards */ - --radius-pill: 9999px; - - /* ---------- Spacing scale (4px base) ---------- */ - --space-1: 4px; - --space-2: 8px; - --space-3: 12px; - --space-4: 16px; - --space-5: 20px; - --space-6: 24px; - --space-8: 32px; - --space-10: 40px; - --space-12: 48px; - --space-16: 64px; - --space-20: 80px; - --space-24: 96px; - - /* ---------- Type families ---------- */ - --font-display: "Lora", ui-serif, Georgia, serif; - --font-body: "Inter", ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif; - --font-mono: "JetBrains Mono", "DM Mono", ui-monospace, SFMono-Regular, Menlo, monospace; - --font-handwritten: "Caveat", cursive; - - /* ---------- Type scale (semantic) ---------- */ - --fs-display-xl: 56px; --lh-display-xl: 1.05; --ls-display-xl: -0.01em; - --fs-display-l: 40px; --lh-display-l: 1.2; - --fs-display-m: 32px; --lh-display-m: 1.125; - --fs-display-s: 24px; --lh-display-s: 1.33; - --fs-lead: 20px; --lh-lead: 1.4; - --fs-body-l: 18px; --lh-body-l: 1.55; - --fs-body-m: 16px; --lh-body-m: 1.5; - --fs-body-s: 14px; --lh-body-s: 1.5; - --fs-caption: 12px; --lh-caption: 1.33; - --fs-mono-s: 12px; --lh-mono-s: 1.5; - --fs-mono-xs: 10px; --lh-mono-xs: 1.4; - - /* ---------- Motion ---------- */ - --ease-out: cubic-bezier(0.2, 0.8, 0.2, 1); - --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); - --dur-1: 150ms; - --dur-2: 250ms; - --dur-3: 400ms; - --dur-hover-card: 500ms; -} - -/* ---------- Dark theme overrides ---------- */ -.dark, [data-theme="dark"] { - --fg-1: var(--rs-dark-50); - --fg-2: var(--rs-dark-300); - --fg-3: var(--rs-dark-500); - --fg-link: #9aaaff; - --bg-page: var(--rs-dark-900); - --bg-surface: var(--rs-dark-700); - --bg-inset: var(--rs-dark-800); - --border-1: var(--rs-dark-900); - --border-2: var(--rs-dark-600); -} - -/* ---------- Base element styles ---------- */ -* { box-sizing: border-box; } -html { font-family: var(--font-body); color: var(--fg-1); background: var(--bg-page); } -body { margin: 0; font-size: var(--fs-body-m); line-height: var(--lh-body-m); -webkit-font-smoothing: antialiased; } -::selection { background: var(--rs-primary); color: var(--rs-ink); } - -h1, .h1 { - font-family: var(--font-display); font-weight: 300; - font-size: var(--fs-display-xl); line-height: var(--lh-display-xl); - letter-spacing: var(--ls-display-xl); - color: var(--fg-1); margin: 0; -} -h2, .h2 { - font-family: var(--font-display); font-weight: 300; - font-size: var(--fs-display-l); line-height: var(--lh-display-l); - color: var(--fg-1); margin: 0; -} -h3, .h3 { - font-family: var(--font-display); font-weight: 300; - font-size: var(--fs-display-m); line-height: var(--lh-display-m); - color: var(--fg-1); margin: 0; -} -h4, .h4 { - font-family: var(--font-display); font-weight: 300; - font-size: var(--fs-display-s); line-height: var(--lh-display-s); - color: var(--fg-1); margin: 0; -} -.lead { - font-family: var(--font-display); font-weight: 300; - font-size: var(--fs-lead); line-height: var(--lh-lead); -} -p { margin: 0 0 var(--space-4) 0; color: var(--fg-1); } -.muted { color: var(--fg-2); } -small, .caption { - font-family: var(--font-body); font-size: var(--fs-caption); line-height: var(--lh-caption); - color: var(--fg-2); -} -code, kbd, .mono { - font-family: var(--font-mono); font-size: var(--fs-mono-s); -} -.handwritten { font-family: var(--font-handwritten); font-weight: 400; } - -a { color: var(--fg-link); text-decoration: none; } -a:hover { text-decoration: underline; } - -/* ---------- Utility classes ---------- */ -.rs-card { - background: var(--bg-surface); - border: 1px solid var(--border-1); - border-radius: var(--radius-lg); - box-shadow: var(--shadow-card); -} -.rs-card-yellow { - background: var(--rs-primary); - border: 1px solid var(--border-brand); - border-radius: var(--radius-lg); - color: var(--fg-on-brand); -} -.rs-btn { - display: inline-flex; align-items: center; gap: 8px; - font-family: var(--font-display); font-weight: 300; font-size: 18px; line-height: 25px; - padding: 3px 10px 4px; border-radius: var(--radius-md); - background: var(--rs-primary); color: var(--rs-ink); - border: 1.5px solid transparent; - transition: background var(--dur-2) var(--ease-out), border-color var(--dur-2) var(--ease-out), transform var(--dur-1) var(--ease-out); - cursor: pointer; -} -.rs-btn:hover { border-color: var(--rs-ink); } -.rs-btn-secondary { background: var(--rs-ink); color: var(--rs-primary); border-color: transparent; } -.rs-btn-secondary:hover { background: var(--rs-ink-deep); } -.rs-btn-subtle { background: transparent; color: var(--rs-primary-alt); border-color: var(--rs-primary-alt); } -.rs-btn-subtle:hover { background: var(--rs-ink-deep); color: var(--rs-primary); border-color: var(--rs-primary); } diff --git a/overrides/home.html b/overrides/home.html deleted file mode 100644 index 531d7d32..00000000 --- a/overrides/home.html +++ /dev/null @@ -1,451 +0,0 @@ -{% extends "main.html" %} - -{#- - The frontpage, written in plain HTML. Registered via docs/index.md. - Hero with quick start terminal, benefit cards, a stats strip, distro - cards, resource cards and a closing CTA. - Styles build on the design tokens in docs/static/colors_and_type.css; - both are loaded inside the content block so they survive instant - navigation, which only swaps the page content. --#} -{% block content %} - - - -
- - -
-
-
-

Manage ROS with ease

-

- Run any ROS distro in an isolated, per-project environment. - On Linux, macOS and Windows. -

- -
-
-
Quick start
-
-
-
- - - - terminal -
- -
-
-
$ pixi init ros_ws -c https://prefix.dev/robostack-humble
-
$ cd ros_ws
-
$ pixi add ros-humble-desktop
-
$ pixi run rviz2
-
-
-
-
-
- - -
-
-
Why RoboStack
-

The ROS setup that stays out of your way

-
-
-
-
- -
-
Any OS, any version
-

Run any ROS distro on Fedora, Arch, macOS with Apple Silicon or Windows. The one-Ubuntu-version-per-distro rule simply doesn't apply here.

-
-
-
- -
-
No sudo, nothing global
-

Each project gets its own environment. Run two distros side by side, delete a folder and it's gone. No Docker, no dual-boot, no VM.

-
-
-
- -
-
Minutes, not an afternoon
-

Every package ships as a prebuilt binary. No compiling from source, no hunting down build dependencies - install and launch rviz.

-
-
-
- -
-
The whole conda ecosystem
-

PyTorch, Jupyter and OpenCV from conda-forge live in the same environment as ROS. Robotics and machine learning, one pixi add apart.

-
-
-
- - -
-
-
-
4,800+
-
packages built across active distros
-
-
-
6
-
active ROS distros
-
-
-
6
-
platforms, from linux-64 to Apple Silicon
-
-
-
0
-
times you'll type sudo
-
-
-
- - -
-
-
-
Channels
-

Pick your ROS distro

-
- All distros → -
- -
- - -
- -
- - -
-
-
-

Missing a package? Add it in one line

-

Most packages join RoboStack as a one-line pull request: put the name in a vinca.yaml and CI builds it for every platform.

-
- Add a package → -
-
- - -
-
-

Your robot doesn't care what OS you run

-

Four commands from an empty folder to rviz on your machine - whichever machine that is.

- -
-
- -
- - -{% endblock %} diff --git a/overrides/packages.html b/overrides/packages.html deleted file mode 100644 index 7ce5c9d9..00000000 --- a/overrides/packages.html +++ /dev/null @@ -1,6 +0,0 @@ -{% extends "main.html" %} - -{#- The package page, written in plain HTML. Registered via docs/packages/index.md. -#} -{% block content %} - -{% endblock %} diff --git a/overrides/partials/header.html b/overrides/partials/header.html deleted file mode 100644 index 2e96e1c9..00000000 --- a/overrides/partials/header.html +++ /dev/null @@ -1,65 +0,0 @@ -{#- - Copy of the stock header partial with one addition: the site sections - (Packages, Documentation) render as links directly in the header bar, - next to the logo, instead of a tabs row below it. --#} -{% set class = "md-header md-header--shadow" %} -
- -
diff --git a/pixi.toml b/pixi.toml index 65490214..cb9b50a2 100644 --- a/pixi.toml +++ b/pixi.toml @@ -6,8 +6,8 @@ platforms = ["osx-arm64", "linux-64", "win-64"] [tasks] compare-completeness = { cmd = "python utils/compare_pkg_completeness.py", description = "Add two arguments to give it the DISTRO and CHANNEL"} serve = { cmd = "zensical serve", description = "Serve the docs locally" } -build-docs = { cmd = "zensical build --strict", description = "Build the site" } -gh-deploy = { cmd = "ghp-import -n -p -f -m 'Deploy site' site", depends-on = ["build-docs"], description = "Build the site and publish it to the gh-pages branch" } +build-docs = { cmd = "zensical build --strict", description = "Build the docs" } +gh-deploy = { cmd = "ghp-import -n -p -f -m 'Deploy docs' site", depends-on = ["build-docs"], description = "Build the docs and publish them to the gh-pages branch" } [dependencies] zensical = ">=0.0.53,<0.0.54" diff --git a/zensical.toml b/zensical.toml index 9befed54..50bd86a5 100644 --- a/zensical.toml +++ b/zensical.toml @@ -13,11 +13,8 @@ extra_javascript = [ "javascripts/tables.js", ] -# The header links to the frontpage (logo), the package page and the -# documentation via the overridden header partial in overrides/partials/. -# The nav below only structures the documentation sidebar. nav = [ - { "Overview" = "Overview.md" }, + { "Home" = "index.md" }, # { "What's New" = "WhatsNew.md" }, { "Getting Started" = "GettingStarted.md" }, { "Available Packages" = [ @@ -39,7 +36,6 @@ nav = [ [project.theme] # Keeps the Material for MkDocs look, so `.md-grid` in docs/extra.css still applies. variant = "classic" -custom_dir = "overrides" features = [ "content.code.copy", "content.action.edit",