diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..a028470 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,24 @@ +name: Test Build + +on: + pull_request: + branches: + - main + # Review gh actions docs if you want to further define triggers, paths, etc + # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on + +jobs: + build: + name: Build Site + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + cache: yarn + + - name: Install dependencies + run: yarn install --frozen-lockfile + - name: Build website + run: yarn build diff --git a/README.md b/README.md index 0c6c2c2..7d8d108 100644 --- a/README.md +++ b/README.md @@ -39,3 +39,4 @@ $ GIT_USER= yarn deploy ``` If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. + diff --git a/blog/2024-09-25-florian-pokorny-cloudgripper/index.md b/blog/2024-09-25-florian-pokorny-cloudgripper/index.md new file mode 100644 index 0000000..e7c9e10 --- /dev/null +++ b/blog/2024-09-25-florian-pokorny-cloudgripper/index.md @@ -0,0 +1,24 @@ +--- +title: "Florian Pokorny presents CloudGripper" +slug: florian-pokorny-cloudgripper +authors: michaelhart +tags: [ros, cloudgripper, guest] +--- + +[Florian Pokorny](https://www.csc.kth.se/~fpokorny/), Associate Professor of Machine Learning at [KTH Royal Institute Technology](https://www.kth.se/) and Co-Founder of [Scaleup Robotics](https://scaleuprobotics.com/), joined our meeting on 2024-09-23. He gave a talk on [CloudGripper, An Open Source Cloud Robotics Testbed for Robotic Manipulation Research, Benchmarking and Data Collection at Scale](https://cloudgripper.org/). He then answered questions on the talk, along with [Muhammed Zahid](https://www.linkedin.com/in/zahid-muhammad/), who led the development work on the CloudGripper system and also co-founded Scaleup Robotics with Florian. + +Take a look at the recording of the talk using the link below: + + + + + +Florian explained the necessity of large quantities of data when training models for robotics, along with using simulations to generate that data. He then went on to describe how simulation wasn't always useful for training models for the real world, hence building a setup of 32 simple grippers for gathering data on deformable objects. + +This fleet of 32 robots is open to the public for experimentation - check the [CloudGripper](https://cloudgripper.org/) link for more information on how to access the robots. Access is free, as long as you are willing to share the data you collect! + +Scaleup Robotics, the startup founded by Florian and Zahid, is focusing on educiation use cases of cloud robotics and has now designed a commercial version of the robot. This will allow the team to deploy more robots. The team is also still developing the robot design, such as providing ROS interfaces and automating access to the robots. + +:::info +The Cloud Robotics Working Group is always on the lookout for more guest speakers. If you have a talk you would like to give or a suggestion of another speaker who may be interested, please [let us know](/meetings)! +::: diff --git a/blog/2024-10-09-eric-chen-fogros2/index.md b/blog/2024-10-09-eric-chen-fogros2/index.md new file mode 100644 index 0000000..42f572a --- /dev/null +++ b/blog/2024-10-09-eric-chen-fogros2/index.md @@ -0,0 +1,32 @@ +--- +title: "Kaiyuan Eric Chen presents FogROS2" +slug: eric-chen-fogros2 +authors: michaelhart +tags: [ros, fogros2, guest] +--- + +## Enabling Usable and Reliable Cloud Robotics with FogROS2 + +[Kaiyuan Eric Chen](https://keplerc.github.io/), a PhD student in the Department of Computer Sciences at UC Berkeley and a member of Berkeley Automation Lab working closely with Ken Goldberg and Jeffrey Ichnowski, joined our meeting on 2024-10-07. He gave a talk titled "Enabling Usable and Reliable Cloud Robotics with FogROS2". He then answered questions on the talk and on [FogROS2](https://berkeleyautomation.github.io/FogROS2), a state-of-the-art open source cloud robotics framework that offloads unmodified ROS2 applications to the cloud. + +Take a look at the recording of the talk using the link below: + + + + + +Eric started by defining Cloud Robotics, pointing out that many applications we don't consider to be Cloud Robotics do actually involve the cloud. He then explained how the cloud helped his research team by speeding up tasks such as planning, and that provisioning the cloud resources led to FogROS, a framework that helped with provisioning the resources. Eric explained the iterations of FogROS and FogROS2, including case studies of their use and improvements in performance over local operation. + +The talk then went on to the reliability aspect of the title. Cloud connections have many points of failure, any one of which causes the application to fail. Eric explained his team's work on proving that multiple simultaneous connections improved the usability and reliability of Cloud Robotics, showing his work and several key examples. + +Finally, Eric answered questions from the group, such as whether to handle transmission failures at the Operating System layer or the application layer, the different models used for comparing responses between simultaneous connections, and how to handle lack of all connection, known as the concert hall problem. + +These links are provided from the presentation and directly from Eric: + +- [FogROS2 repository](https://github.com/BerkeleyAutomation/FogROS2): contains the source code and description of FogROS2. +- [Fog-RTC x CloudGripper Dataset Visualizer](https://berkeleyautomation.github.io/CloudRobotics_tutorial/): shows the CloudGripper visualization using FogROS2, and collected at ICRA 2024. For more information about CloudGripper, take a look at [Florian Pokorny's presentation](/blog/florian-pokorny-cloudgripper). +- [Leveraging Cloud Computing to Make Autonomous Vehicles Safer](https://arxiv.org/abs/2308.03204): shows work in executing a workload both locally and in the cloud, and comparing the response, for the best safety in autonomous vehicles. + +:::info +The Cloud Robotics Working Group is always on the lookout for more guest speakers. If you have a talk you would like to give or a suggestion of another speaker who may be interested, please [let us know](/meetings)! +::: diff --git a/blog/2024-11-04-julien-enoch-zenoh/index.md b/blog/2024-11-04-julien-enoch-zenoh/index.md new file mode 100644 index 0000000..a540986 --- /dev/null +++ b/blog/2024-11-04-julien-enoch-zenoh/index.md @@ -0,0 +1,25 @@ +--- +title: "Julien Enoch presents Eclipse Zenoh" +slug: julien-enoch-zenoh +authors: michaelhart +tags: [ros, zenoh, guest] +--- + +[Julien Enoch](https://www.linkedin.com/in/julienenoch/), a Senior Solutions Architect at [ZettaScale Technology](https://www.zettascale.tech/) and [Eclipse Zenoh](https://github.com/eclipse-zenoh/zenoh) committer, joined our meeting on 4th November 2024. He gave a talk on Eclipse Zenoh, a protocol which can run everywhere, from micro-controllers to the Cloud; over TCP, UDP, QUIC, and Websockets. Zenoh provides a software router that can be deployed in any Cloud instance such as AWS EC2, and that can route the protocol between different subsystems. + + + + + +Julien started by talking about how the Zenoh protocol works, including the software router and example network diagrams. Zenoh is written in Rust, is available in many languages, comes with built-in messaging features like fragmentation and batching, and can operate over any data link, including TCP, Serial, Bluetooth, and so on. + +Julien showed how fast the protocol can perform compared to other solutions, and how it's possible to extend the protocol using plugins. He also demonstrated using RViz to control a Turtlebot 4 via Zenoh, where one machine was in France and another in California, United States. + +The talk then went on to where the protocol could run, how it could discover other nodes, and how to update network configuration without making code changes. This also includes TLS encryption on the link. + +Finally, Julien answered questions from the group, including the maturity of JavaScript language support, how multi-router discovery works, and access control options for Zenoh. For more detail on any of these points, watch the recording above for the full talk! + +:::info +The Cloud Robotics Working Group is always on the lookout for more guest speakers. If you have a talk you would like to give or a suggestion of another speaker who may be interested, please [let us know](/meetings)! +::: + diff --git a/blog/2024-12-09-phil-roan-zenoh-and-turtlebot/index.md b/blog/2024-12-09-phil-roan-zenoh-and-turtlebot/index.md new file mode 100644 index 0000000..497b433 --- /dev/null +++ b/blog/2024-12-09-phil-roan-zenoh-and-turtlebot/index.md @@ -0,0 +1,111 @@ +--- +title: "Switching to Zenoh" +slug: phil-roan-zenoh-and-turtlebot +authors: philiproan +tags: [guest, ros, zenoh, turtlebot] +--- + +Inspired by Julien Enoch's presentation on Eclipse Zenoh ([meeting on 2024-11-04](/meetings)) and our attempts two weeks later to test Zenoh as a ROS 2 middleware ([meeting on 2024-12-02](/meetings)), I decided to upgrade my Turtlebot2 reference platform to use Zenoh. In particular, I wanted to duplicate the existing ability to control the robot using RViz from a separate computer. + +## tl;dr +All files can be found at [https://github.com/ingotrobotics/turtlebot2_ros2/tree/feature/zenoh](https://github.com/ingotrobotics/turtlebot2_ros2/tree/feature/zenoh). Issues, pull requests, and all other commentary are encouraged. + +## Background +Before I jump in, let me provide some background on my reference platform. I use a Turtlebot2 (built on the [Kobuki platform](https://github.com/kobuki-base/kobuki_core)) with a [Hokuyo URG](https://www.hokuyo-aut.jp/search/single.php?serial=166) planar laser scanner for navigation. An [Intel RealSense D435](https://www.intelrealsense.com/depth-camera-d435/) camera provides RGB and depth images, and an Intel NUC provides the compute. The robot runs ROS 2 Humble, Iron, or Jazzy from a Docker container. There is no ROS installed natively on the robot. Not all of the Turtlebot2 packages are available as `apt` packages, so part of the container building process involves building those packages from source. Containers are built by a Jenkins instance and hosted on a private Docker registry. More details can be found in the [Dockerfile](https://github.com/ingotrobotics/turtlebot2_ros2/blob/main/turtlebot2_ros2.dockerfile). + +## Add Zenoh to Container +To add Zenoh support to the container, I added the following lines to my Dockerfile: +``` +# Install Zenoh +RUN mkdir -p "$ROBOT_WORKSPACE/src" && \ + git clone https://github.com/ros2/rmw_zenoh.git "$ROBOT_WORKSPACE/src/rmw_zenoh" +RUN apt-get update && \ + rosdep install --from-paths ./src -y --ignore-src && \ + rm -rf /var/lib/apt/lists/* +RUN source "/opt/ros/$ROS_DISTRO/setup.bash" && \ + colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release + +# Set ROS to use Zenoh as the middleware +RUN echo "export RMW_IMPLEMENTATION=rmw_zenoh_cpp" >> /root/.bashrc && \ + echo "export RUST_LOG=info" >> /root/.bashrc +``` + +Like in the [meeting on 2024-12-02](/meetings), I am referencing the [Zenoh ROSCon workshop materials](https://github.com/ZettaScaleLabs/roscon2024_workshop). As you see in that meeting, I was able to get communication working between three containers on the same machine, but I was not able to get communication to work between two separate machines. So after building Zenoh support into the Turtlebot container, I started at [Exercise 2](https://github.com/ZettaScaleLabs/roscon2024_workshop/blob/main/exercises/ex-2.md). The key step here is copying and editing the router configuration file. + +I spent a lot of time sorting out why the config file in the workshop materials was not running before I realized it had been updated recently and the update introduced a [bug](https://github.com/ZettaScaleLabs/roscon2024_workshop/issues/12) for the version of Zenoh I installed. This is a nice reminder that while version 1.0.0 has been released, `rmw_zenoh` is still under quite a bit of active development. + +If you've never switched away from the default ROS2 DDS middleware, it can be easy to forget to set the `RMW_IMPLEMENTATION` environment variable, which is what actually makes the switch happen. This has to be done in every Bash instance if changing away from the default. `ros2 doctor --report` will show the active ROS middleware. Common alternatives to `rmw_zenoh_cpp` are `rmw_fastrtps_cpp`, `rmw_fastrtps_dynamic_cpp`, or `rmw_cyclonedds_cpp`. + +## Network Topology +For my reference platform, the topology of a router running on each device (robot and developer computer) is a great setup and is shown in this diagram: [![Diagram from ROSCon workshop showing two containers, each with a Zenoh router](https://raw.githubusercontent.com/ZettaScaleLabs/roscon2024_workshop/0ccbaa88f32c47eb9f1d19b203dac27a15e794e2/exercises/pictures/talker-listener-2-containers.png)](https://raw.githubusercontent.com/ZettaScaleLabs/roscon2024_workshop/0ccbaa88f32c47eb9f1d19b203dac27a15e794e2/exercises/pictures/talker-listener-2-containers.png). Not every system will need or benfit from this topology, but in my case, the configuration is very simple and it also simplifies the ROS 2 network traffic between my two devices. + +For this topology, only one device needs to use the customized config file that provides the address of the other device. With my reference platform, I typically use one robot but multiple development devices or containers, which means I should have the config file on the development devices providing the address of the robot. I mentioned earlier that the robot does not have a native ROS installation, and neither do my development devices; they run container images built using the same Dockerfile as the robot only they are based on the `-desktop` [images provided by OSRF](https://hub.docker.com/r/osrf/ros/tags). This means that I'll have the default config file copied to the appropriate location in the Dockerfile, and setting the necessary environment variable (`ZENOH_ROUTER_CONFIG_URI`) for Zenoh to use it will happen in the command to launch the development container. + +Copying the router config file adds one more line to the Dockerfile: +``` +RUN mkdir -p "$ROBOT_WORKSPACE/zenoh_confs" && \ + cp "$ROBOT_WORKSPACE/src/rmw_zenoh/rmw_zenoh_cpp/config/DEFAULT_RMW_ZENOH_ROUTER_CONFIG.json5" "$ROBOT_WORKSPACE/zenoh_confs/ROUTER_CONFIG.json5" +``` + +It would not be good practice for me to publish the IP address of my robot on GitHub, even for a reference implementation, so I have replaced it with an environment variable, `ZENOH_TARGET` that is specified as part of the `docker run` command. Since I don't know enough about how Zenoh parses the config file, I use `sed` to replace the value in the config file rather than leaving the Bash environment variable: +``` +sed -i "s|// \"/
\"|\"$ZENOH_TARGET\"|" "$ROBOT_WORKSPACE/zenoh_confs/ROUTER_CONFIG.json5" +``` +This is brittle because the default config file is likely to change as Zenoh develops and as more ROS users migrate to it. If you have a better way to accomplish this, I'd be interested in seeing it. + +## Launching Zenoh Router and ROS Nodes +One last challenge is that I am launching the Zenoh router separately from my other launch files, which requires running two processes in the container. It looks like there is on-going work to simplify this in the `rmw_zenoh` repos. + +To accomplish launching the router and my other ROS processes in a "quick and dirty" manner, I have written a [little script](https://github.com/ingotrobotics/turtlebot2_ros2/blob/feature/zenoh/background_zenoh_router.sh) to run the router in the background. This script also handles the address replacement from the environment variable passed in when starting the container. These commands should probably be incorporated into the robot's launch file, and I should write a launch file incorporating these commands for launching RViz as well. Look for that improvement soon. + +## So does it work? +Mostly. Here's a screenshot of RViz showing the robot, laser scans, map, and RGB camera output. ![Screenshot of RViz showing Turtlebot2 exploring a room with laser scan points in yellow.](rviz_screenshot.png) +I was able to drive the robot using `teleop_twist_keyboard`, but I was not able to use RViz to successfully send a goal point. + +There are some issues starting up the Nav2 stack, and relaunching will sometimes produce different errors. Here are two samples: +``` +[lifecycle_manager-17] [INFO] [1733773169.631170992] [lifecycle_manager_navigation]: Waiting for service bt_navigator/get_state... +[lifecycle_manager-17] [INFO] [1733773171.631518706] [lifecycle_manager_navigation]: Waiting for service bt_navigator/get_state... +``` +``` +[opennav_docking-16] [ERROR] [1733772743.456351127] [rmw_zenoh_cpp]: topic name /tf_static not found in topic_map. Report this. +[opennav_docking-16] [ERROR] [1733772743.457680837] [rmw_zenoh_cpp]: topic name /tf_static not found in topic_map. Report this. +``` +I need to look into these and see if the issue can be solved in my launch file and configuration or if there are deeper bugs that should be reported to the package maintainers. + +## Do I get any benefits? +Yes, I get one really big benefit, but it comes with some drawbacks. First, the big benefit is that I can remove `--network=host` from the `docker run` commands and replace with `-p 7447:7447`. Restricting the accesible ports (and devices) to the minimum required reduces the potential security attack surface, so this is good. Explicitly calling out the necessary ports also makes it easier to run multiple containers on the same host, which is also good. + +The biggest drawback is that Nav2 doesn't run out-of-the-box any more. I expect this to be resolved fairly quickly, since there is plenty of attention and momentum on using Zenoh for ROS. + +The other major drawback is that the docker images are much larger now: A Zenoh-enabled image is 11 GB, which is around 6 GB larger than the image without Zenoh. Disk space isn't the constraint is used to be, but this is a significant increase and a barrier for adoption in low-cost, mass-market robots. + +Another small personal benefit is that as a part of this work, I updated the Jenkinsfile to include Git branch names in the container tags. This was an open issue, and it feels good to close it. + +## Commands and Files +All files can be found at [https://github.com/ingotrobotics/turtlebot2_ros2/tree/feature/zenoh](https://github.com/ingotrobotics/turtlebot2_ros2/tree/feature/zenoh). Issues, pull requests, and all other commentary are encouraged. + +To run the container on my robot, I use a command like +``` +$> docker run -it --rm -p 7447:7447 --device= $CONTAINER_NAME +``` +And once inside the container: +``` +$> ./background_zenoh_router.sh +$> source install/setup.bash +$> ros2 launch turtlebot2_bringup turtlebot2_bringup.launch.py +``` + +On the developer device, I use rocker to run RViz in the container, so the container commands look like +``` +$> rocker --x11 --device=/dev/dri/card0 --port=7447:7447 --volume="$HOME"/.rviz2:/root/.rviz2 --env='ZENOH_TARGET="tcp/:7447"' $CONTAINER_NAME +``` +and then +``` +$> ./background_zenoh_router.sh +$> source install/setup.bash +``` +Followed by either `rviz2` or `ros2 run teleop_twist_keyboard teleop_twist_keyboard`. + +## Future Work +In the future, I would like to setup a Zenoh cloud router that can be used to demo the platform when I don't want to bring my robot (and separate wifi router) with me. I also plan on switching to an NVidia Jetson Nano for the on-robot compute. diff --git a/blog/2024-12-09-phil-roan-zenoh-and-turtlebot/rviz_screenshot.png b/blog/2024-12-09-phil-roan-zenoh-and-turtlebot/rviz_screenshot.png new file mode 100644 index 0000000..a71c5bb Binary files /dev/null and b/blog/2024-12-09-phil-roan-zenoh-and-turtlebot/rviz_screenshot.png differ diff --git a/blog/2024-12-16-tomoya-fujita-kubeedge/index.md b/blog/2024-12-16-tomoya-fujita-kubeedge/index.md new file mode 100644 index 0000000..2183eed --- /dev/null +++ b/blog/2024-12-16-tomoya-fujita-kubeedge/index.md @@ -0,0 +1,31 @@ +--- +title: "Tomoya Fujita presents Robotics Platforms empowered by Cloud-Native Technologies" +slug: tomoya-fujita-kubeedge +authors: michaelhart +tags: [ros, kubeedge, guest] +--- + +[Tomoya Fujita](https://github.com/fujitatomoya), a Software Engineer at Sony, contributor to ROS2 core, and well-respected community builder, joined our meeting on 16th December 2024. He spoke about using Cloud-Native Technologies to deploy to edge devices and manage their life cycles, secrets, configuration, and even secure their network connections. + + + + + +Resources used during the talk: +- [ROSCon 2023: ROS with Kubernetes / KubeEdge](https://roscon.ros.org/2023/talks/ROS_with_KubernetesKubeEdge.pdf) +- [Some examples to deploy ROS / ROS 2 with Kubernetes](https://github.com/fujitatomoya/ros_k8s) +- [Next-generation Robotics Platform for Edge/Cloud](https://static.sched.com/hosted_files/colocatedeventsna2024/15/Cilium%2BeBPF-Day-NA_Cilium-with-KubeEdge.v0.pdf) + +Tomoya started by talking through the same slides he used for the demo he gave at ROSCon in 2023, about deploying ROS/ROS2 code using Kubernetes. He talked about enabling deploying to fleets of robots and the pain points that come with it. He also spoke about using Kubernetes to automatically connect robots to cloud resources, such as API servers, as well as auto-scale those cloud resources. + +Next, Tomoya spoke about KubeEdge, which is built on Kubernetes and allows networking, application deployment, and metadata synchronization between cloud and edge nodes. KubeEdge can be used to configure ROS2 networks so nodes can talk to each other, and allows a user to interact with a robot fleet via cloud-based API servers, for example. + +He also spoke about securing the data to the application. When any container starts up, KubeEdge can synchronize secrets and configuration to each container. However, this is not done with any effort from the container it self - Tomoya emphasized his belief that applications should be agnostic to their deployment and metadata synchronization mechanism! + +After the ROSCon slides, Tomoya spoke about Cilium at the edge via KubeEdge. This is a way to solve the problem of securing cross-network communications, as Cilium modifies the network interfaces of deployed containers to communicate via WireGuard VPN. In this way, nodes on an edge device can communicate with other nodes on other edge devices or in the cloud as if they are on the same network, using encrypted communication. One note is that edge devices need to be on the same physical layer for this to work - the team are working on making edge to edge communication over different networks work as well! + +Finally, Tomoya answered questions from the group, including: whether Cilium supports multicast (can be enabled, but is Work In Progress); whether KubeEdge is currently used in production (no, but it's ready); and the configuration for cloud and edge nodes to communicate correctly; among other questions. + +:::info +The Cloud Robotics Working Group is always on the lookout for more guest speakers. If you have a talk you would like to give or a suggestion of another speaker who may be interested, please [let us know](/meetings)! +::: diff --git a/blog/2025-05-27-community-guide-priorities/index.md b/blog/2025-05-27-community-guide-priorities/index.md new file mode 100644 index 0000000..f07c3fa --- /dev/null +++ b/blog/2025-05-27-community-guide-priorities/index.md @@ -0,0 +1,38 @@ +--- +title: "The Priority List of the Cloud Robotics Hub Guides" +slug: community-guide-priorities +authors: michaelhart +tags: [community] +--- + +This is a brief post to announce the results of the community poll to determine priorities of the Cloud Robotics Hub guides. + +The polls were posted on: + +- ROS Discourse: [Poll Post](https://discourse.ros.org/t/vote-for-the-most-useful-cloud-robotics-guides/43842) +- LinkedIn: [Poll Post](https://www.linkedin.com/posts/michael-hart-a7614262_vote-for-the-most-useful-cloud-robotics-activity-7330529697442725888-6goD) + +After a week of poll time, the results were collected together and combined, assuming that no voter voted in both polls. The results are as follows: + +1. Logging and Observability (10 votes) + - ROS Discourse: 5 votes + - LinkedIn: 5 votes +1. Simulation on Cloud/Edge (7 votes) + - ROS Discourse: 2 votes + - LinkedIn: 5 votes +1. CI/CD/Remote Deployment (7 votes) + - ROS Discourse: 5 votes + - LinkedIn: 2 votes +1. Setting up ML in the Cloud (4 votes) + - ROS Discourse: 2 votes + - LinkedIn: 2 votes + +Therefore, the priority list for the group is now: + +- [Priority 1] Uploading Data to the Cloud (Work In Progress) +- [Priority 2] Logging and Observability +- [Priority 3] Simulation on Cloud/Edge +- [Priority 3] CI/CD/Remote Deployment +- [Priority 4] Setting up ML in the Cloud + +The group will begin to have discussion sessions on each topic to gather information for a guide. We will also consider guests to invite and questions that we need to answer in order to build the guide correctly. With specialist input, we should be able to produce something very valuable for the community. diff --git a/blog/authors.yml b/blog/authors.yml index 53a24be..4fca095 100644 --- a/blog/authors.yml +++ b/blog/authors.yml @@ -3,3 +3,8 @@ michaelhart: title: Maintainer of Cloud Robotics Hub and Lead of Cloud Robotics Working Group url: https://mikelikesrobots.github.io image_url: https://mikelikesrobots.github.io/img/headshot-cropped.webp +philiproan: + name: Phil Roan + title: Founder and Principal Engineer, Ingot Robotics + url: https://ingotrobotics.com + image_url: https://ingotrobotics.com/images/proan_300x300.jpg diff --git a/blog/tags.yml b/blog/tags.yml index f71dd73..d8a1328 100644 --- a/blog/tags.yml +++ b/blog/tags.yml @@ -1,16 +1,36 @@ -facebook: - label: Facebook - permalink: /facebook - description: Facebook tag description -hello: - label: Hello - permalink: /hello - description: Hello tag description -docusaurus: - label: Docusaurus - permalink: /docusaurus - description: Docusaurus tag description -hola: - label: Hola - permalink: /hola - description: Hola tag description +ros: + label: ROS + permalink: /ros + description: Related to ROS, the Robot Operating System +guest: + label: Guest + permalink: /guest + description: Related to resources provided by a guest +rostool: + label: ROS Tool + permalink: /rostool + description: Related to ROS Tool, the robot to web capability from Transitive Robotics +cloudgripper: + label: CloudGripper + permalink: /cloudgripper + description: Related to CloudGripper, the research experiment to gather data on gripping deformable objects +fogros2: + label: FogROS2 + permalink: /fogros2 + description: Related to FogROS2, a framework for cloud deployment of computational graphs in a security-conscious manner +zenoh: + label: Eclipse Zenoh + permalink: /zenoh + description: Related to Eclipse Zenoh, a messaging protocol with software router provided, capable of working via the cloud +turtlebot: + label: Turtlebot Platform + permalink: /turtlebot + description: Related to Turtlebot reference platforms, a series of mobile base robots frequently used to demonstrate indoor navigation +kubeedge: + label: KubeEdge + permalink: /kubeedge + description: Related to KubeEdge, a platform built on Kubernetes that allows deployment of software to edge devices +community: + label: Community + permalink: /community + description: Related to the community, including any work to be published for the benefit of the community diff --git a/docs/intro.md b/docs/intro.md deleted file mode 100644 index 45e8604..0000000 --- a/docs/intro.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Tutorial Intro - -Let's discover **Docusaurus in less than 5 minutes**. - -## Getting Started - -Get started by **creating a new site**. - -Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**. - -### What you'll need - -- [Node.js](https://nodejs.org/en/download/) version 18.0 or above: - - When installing Node.js, you are recommended to check all checkboxes related to dependencies. - -## Generate a new site - -Generate a new Docusaurus site using the **classic template**. - -The classic template will automatically be added to your project after you run the command: - -```bash -npm init docusaurus@latest my-website classic -``` - -You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor. - -The command also installs all necessary dependencies you need to run Docusaurus. - -## Start your site - -Run the development server: - -```bash -cd my-website -npm run start -``` - -The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there. - -The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/. - -Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes. diff --git a/docs/resources/categories/computing.md b/docs/resources/categories/computing.md new file mode 100644 index 0000000..e06ea63 --- /dev/null +++ b/docs/resources/categories/computing.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 1 +--- + +import FogRobotics from '/docs/resources/resource_definitions/_fog_robotics.md' + +# Cloud Computing + + diff --git a/docs/resources/categories/connecting.md b/docs/resources/categories/connecting.md new file mode 100644 index 0000000..033bc3b --- /dev/null +++ b/docs/resources/categories/connecting.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 2 +--- + +import TransitiveRobotics from '/docs/resources/resource_definitions/_transitive_robotics.md' +import EclipseZenoh from '/docs/resources/resource_definitions/_eclipse_zenoh.md' +import GoogleCloudRoboticsCore from '/docs/resources/resource_definitions/_google_cloud_robotics_core.md' +import AWSIoTGreengrass from '/docs/resources/resource_definitions/_aws_iot_greengrass.md' +import FogRobotics from '/docs/resources/resource_definitions/_fog_robotics.md' + +# Connecting and Communicating + + + + + + diff --git a/docs/resources/categories/deployment.mdx b/docs/resources/categories/deployment.mdx new file mode 100644 index 0000000..c1cec7e --- /dev/null +++ b/docs/resources/categories/deployment.mdx @@ -0,0 +1,15 @@ +--- +sidebar_position: 4 +--- + +import FogRobotics from '/docs/resources/resource_definitions/_fog_robotics.md' +import KubeEdge from '/docs/resources/resource_definitions/_kube_edge.md' +import GoogleCloudRoboticsCore from '/docs/resources/resource_definitions/_google_cloud_robotics_core.md' +import AWSIoTGreengrass from '/docs/resources/resource_definitions/_aws_iot_greengrass.md' + +# Deployment + + + + + diff --git a/docs/resources/categories/index.md b/docs/resources/categories/index.md new file mode 100644 index 0000000..2fa9c25 --- /dev/null +++ b/docs/resources/categories/index.md @@ -0,0 +1,20 @@ +--- +sidebar_position: 2 +--- + +# Categories + +We have resources for the following categories: + +- [Cloud Computing](/docs/resources/categories/computing) +- [Connectivity](/docs/resources/categories/connecting) +- [Storage](/docs/resources/categories/storage) +- [Deployment](/docs/resources/categories/deployment) +- [Web Tools](/docs/resources/categories/web_tools) +- [Simulation and Testing](/docs/resources/categories/simulation) + +:::note + +Some resources fit multiple categories, so will be visible on multiple pages. + +::: diff --git a/docs/resources/categories/simulation.md b/docs/resources/categories/simulation.md new file mode 100644 index 0000000..290a751 --- /dev/null +++ b/docs/resources/categories/simulation.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 6 +--- + +import CloudGripper from '/docs/resources/resource_definitions/_cloudgripper.md' + +# Simulation and Testing + + diff --git a/docs/resources/categories/storage.md b/docs/resources/categories/storage.md new file mode 100644 index 0000000..a9b7561 --- /dev/null +++ b/docs/resources/categories/storage.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 3 +--- + +# Cloud Storage + +:::warning + +No resources yet. Check back later or [suggest a change](https://github.com/cloudroboticshub/cloudroboticshub.github.io/issues/new). + +::: diff --git a/docs/resources/categories/web_tools.md b/docs/resources/categories/web_tools.md new file mode 100644 index 0000000..c055967 --- /dev/null +++ b/docs/resources/categories/web_tools.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 5 +--- + +import RobotWebTools from '/docs/resources/resource_definitions/_robot_web_tools.md' +import TransitiveRobotics from '/docs/resources/resource_definitions/_transitive_robotics.md' + +# Web Tools + + + diff --git a/docs/resources/foreword.md b/docs/resources/foreword.md new file mode 100644 index 0000000..d4cfd54 --- /dev/null +++ b/docs/resources/foreword.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 1 +--- + +# Foreword + +Cloud Robotics is any use of cloud technologies to support robotics applications. This includes, but is not limited to: cloud computing; cloud storage; cloud-based OTA deployments; simulation; and global connectivity. In short, any use of the cloud by robots, direct, or indirect, is classed as Cloud Robotics. You can read more about why to use Cloud Robotics in [this blog post](https://mikelikesrobots.github.io/blog/why-use-cloud-robotics) by one of our members. + +However, Cloud Robotics is a young field that has growing pains. Our own [State of Cloud Robotics survey](/survey) shows that the most common problems developers have with Cloud Robotics is in lack of documentation and useful examples. That is to say, while users would benefit from more and better Cloud Robotics tools, the greatest need at the moment is instructions and best practices for using the tools that already exist. + +This in turn leads to our Resources section, where we are curating useful Cloud Robotics tools into one place. More than this, we are recommending best practices to help new users get started with the right technologies, used in the right way. If you are looking to connect your robot to the cloud in the easiest way possible, or offload data as quickly as possible, this page should show you how. + +:::tip +This page is a living document, and will be updated over time as new tools come out and we receive new suggestions. If you have a resource that you want to tell the community about, or any other suggestion to make for this page, please [create an issue](https://github.com/cloudroboticshub/cloudroboticshub.github.io/issues/new) and one of the group will review the suggestion. If it is accepted, we will happily add it to the page! +::: diff --git a/docs/resources/other_resources.md b/docs/resources/other_resources.md new file mode 100644 index 0000000..53ccc0a --- /dev/null +++ b/docs/resources/other_resources.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 3 +--- + +# Other Resources + +If you can't find what you're looking for in the resources we have, try looking at one of the external links below. Don't be afraid to [suggest a change](https://github.com/cloudroboticshub/cloudroboticshub.github.io/issues/new) if you do find something is missing! + +## [Awesome Cloud Robotics | Kaiyuan Eric Chen](https://github.com/KeplerC/awesome-cloud-robotics) + +[Kaiyuan Eric Chen](https://keplerc.github.io) supports this list of robotics resources, available on [Github](https://github.com/KeplerC/awesome-cloud-robotics). + +## [Awesome Cloud Robotics | Airbotics](https://github.com/Airbotics/awesome-cloud-robotics) + +[AndrewAirbotics](https://github.com/AndrewAirbotics) supports this list of robotics resources, available on [Github](https://github.com/Airbotics/awesome-cloud-robotics). diff --git a/docs/resources/resource_definitions/_aws_iot_greengrass.md b/docs/resources/resource_definitions/_aws_iot_greengrass.md new file mode 100644 index 0000000..767595f --- /dev/null +++ b/docs/resources/resource_definitions/_aws_iot_greengrass.md @@ -0,0 +1,10 @@ +## [AWS IoT Greengrass](https://aws.amazon.com/greengrass/) + +AWS IoT Greengrass is an open-source edge runtime and cloud service for building, deploying, and managing device software. It also provides easier interfacing with some AWS services, such as Amazon Lambda, and allows for global communication over MQTT via AWS IoT Core. + +Greengrass is not built specifically for robots, but can be used by any robot with enough system resources for Greengrass, which is a memory-intensive management application. + +For more information on Greengrass, take a look at the links below, made by a Cloud Robotics Working Group member: + +- [AWS IoT Greengrass Concepts and Components! (video)](https://youtu.be/2VXIILtiMiU) +- [Automatically Sending ROS2 Data to IoT Core with Greengrass](https://mikelikesrobots.github.io/blog/automatic-ros2-greengrass-conversion) diff --git a/docs/resources/resource_definitions/_cloudgripper.md b/docs/resources/resource_definitions/_cloudgripper.md new file mode 100644 index 0000000..f97e7ec --- /dev/null +++ b/docs/resources/resource_definitions/_cloudgripper.md @@ -0,0 +1,5 @@ +## [CloudGripper: The Open Source Cloud Robotics Testbed](https://cloudgripper.org) + +CloudGripper is an open source cloud robotics testbed for remote robotic manipulation research, benchmarking, and data collection. From KTH Royal Institute of Technology. + +CloudGripper is open for academic users, on condition that any data collected is made publicly available for other users. For more information, read more on [the website](https://cloudgripper.org). diff --git a/docs/resources/resource_definitions/_eclipse_zenoh.md b/docs/resources/resource_definitions/_eclipse_zenoh.md new file mode 100644 index 0000000..4e43319 --- /dev/null +++ b/docs/resources/resource_definitions/_eclipse_zenoh.md @@ -0,0 +1,5 @@ +## [Eclipse Zenoh](https://zenoh.io/) + +Zenoh is a pub/sub/query protocol that also allows for distributed storage, queries, and computation. It claims efficiency well beyond any of the mainstream stacks. + +In addition to the protocol, Zenoh is building [rmw_zenoh](https://github.com/ros2/rmw_zenoh), a ROS Middleware (RMW) implementation that can be used as a replacement for ROS2 DDS. This allows robots to communicate across the globe using cloud-based routers while providing all of the features available in Zenoh. diff --git a/docs/resources/resource_definitions/_fog_robotics.md b/docs/resources/resource_definitions/_fog_robotics.md new file mode 100644 index 0000000..0d6762c --- /dev/null +++ b/docs/resources/resource_definitions/_fog_robotics.md @@ -0,0 +1,9 @@ +## [Fog Robotics](https://sites.google.com/view/fogrobotics) + +[Fog Robotics](https://sites.google.com/view/fogrobotics) allows users to utilize storage, compute, and networking resources between cloud and edge in a federated manner. + +Fog Robotics is developed by members of UC Berkeley. + +[FogROS 2](https://berkeleyautomation.github.io/FogROS2/about) is also developed by UC Berkeley as part of Fog Robotics. It is an adaptive and extensible platform for Cloud and Fog Robotics using ROS2. + +[FogROS2 SGC](https://github.com/data-capsule/fogros2-sgc) is an extension of FogROS 2 which connects disjoint ROS2 networks across different physical locations, networks, and Data Distribution Services. diff --git a/docs/resources/resource_definitions/_google_cloud_robotics_core.md b/docs/resources/resource_definitions/_google_cloud_robotics_core.md new file mode 100644 index 0000000..88f47b1 --- /dev/null +++ b/docs/resources/resource_definitions/_google_cloud_robotics_core.md @@ -0,0 +1,5 @@ +## [Google Cloud Robotics Core](https://googlecloudrobotics.github.io/core/) + +Google’s Cloud Robotics Core is an open source platform that provides infrastructure essential to building and running robotics solutions for business automation. + +It manages packaging and distribution of applications, bi-directional communication, and easy access to Google Cloud services. diff --git a/docs/resources/resource_definitions/_kube_edge.md b/docs/resources/resource_definitions/_kube_edge.md new file mode 100644 index 0000000..a77e620 --- /dev/null +++ b/docs/resources/resource_definitions/_kube_edge.md @@ -0,0 +1,3 @@ +## [KubeEdge](https://kubeedge.io/) + +[KubeEdge](https://kubeedge.io/) is built on [Kubernetes](https://kubernetes.io/) and extends its orchestration capabilities to hosts at the edge. It supports network infrastructure, application deployment, and metadata synchronization between cloud and edge. diff --git a/docs/resources/resource_definitions/_robot_web_tools.md b/docs/resources/resource_definitions/_robot_web_tools.md new file mode 100644 index 0000000..1cef260 --- /dev/null +++ b/docs/resources/resource_definitions/_robot_web_tools.md @@ -0,0 +1,3 @@ +## [Robot Web Tools](https://robotwebtools.github.io/) + +[Robot Web Tools](https://robotwebtools.github.io/) contains open-source libraries and tools for building web-based robot apps with ROS. diff --git a/docs/resources/resource_definitions/_transitive_robotics.md b/docs/resources/resource_definitions/_transitive_robotics.md new file mode 100644 index 0000000..545a9cd --- /dev/null +++ b/docs/resources/resource_definitions/_transitive_robotics.md @@ -0,0 +1,3 @@ +## [Transitive Robotics](https://transitiverobotics.com/) + +[Transitive](https://transitiverobotics.com/) is an open-source framework for full-stack robotics. It is designed to make it easy to create capabilities that seamlessly connect robot, cloud, and web front-ends including a dynamically updating shared data model. It offers solutions to many problems developers encounter when building full-stack robotic applications, including unreliable networks, robots that are regularly offline or turned off, as well as cross-device version dependencies. diff --git a/docs/tutorial-basics/_category_.json b/docs/tutorial-basics/_category_.json deleted file mode 100644 index 2e6db55..0000000 --- a/docs/tutorial-basics/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Tutorial - Basics", - "position": 2, - "link": { - "type": "generated-index", - "description": "5 minutes to learn the most important Docusaurus concepts." - } -} diff --git a/docs/tutorial-basics/congratulations.md b/docs/tutorial-basics/congratulations.md deleted file mode 100644 index 04771a0..0000000 --- a/docs/tutorial-basics/congratulations.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_position: 6 ---- - -# Congratulations! - -You have just learned the **basics of Docusaurus** and made some changes to the **initial template**. - -Docusaurus has **much more to offer**! - -Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**. - -Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610) - -## What's next? - -- Read the [official documentation](https://docusaurus.io/) -- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config) -- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration) -- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout) -- Add a [search bar](https://docusaurus.io/docs/search) -- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase) -- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support) diff --git a/docs/tutorial-basics/create-a-blog-post.md b/docs/tutorial-basics/create-a-blog-post.md deleted file mode 100644 index 550ae17..0000000 --- a/docs/tutorial-basics/create-a-blog-post.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Create a Blog Post - -Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed... - -## Create your first Post - -Create a file at `blog/2021-02-28-greetings.md`: - -```md title="blog/2021-02-28-greetings.md" ---- -slug: greetings -title: Greetings! -authors: - - name: Joel Marcey - title: Co-creator of Docusaurus 1 - url: https://github.com/JoelMarcey - image_url: https://github.com/JoelMarcey.png - - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png -tags: [greetings] ---- - -Congratulations, you have made your first post! - -Feel free to play around and edit this post as much as you like. -``` - -A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings). diff --git a/docs/tutorial-basics/create-a-document.md b/docs/tutorial-basics/create-a-document.md deleted file mode 100644 index c22fe29..0000000 --- a/docs/tutorial-basics/create-a-document.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Create a Document - -Documents are **groups of pages** connected through: - -- a **sidebar** -- **previous/next navigation** -- **versioning** - -## Create your first Doc - -Create a Markdown file at `docs/hello.md`: - -```md title="docs/hello.md" -# Hello - -This is my **first Docusaurus document**! -``` - -A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello). - -## Configure the Sidebar - -Docusaurus automatically **creates a sidebar** from the `docs` folder. - -Add metadata to customize the sidebar label and position: - -```md title="docs/hello.md" {1-4} ---- -sidebar_label: 'Hi!' -sidebar_position: 3 ---- - -# Hello - -This is my **first Docusaurus document**! -``` - -It is also possible to create your sidebar explicitly in `sidebars.js`: - -```js title="sidebars.js" -export default { - tutorialSidebar: [ - 'intro', - // highlight-next-line - 'hello', - { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], - }, - ], -}; -``` diff --git a/docs/tutorial-basics/create-a-page.md b/docs/tutorial-basics/create-a-page.md deleted file mode 100644 index 20e2ac3..0000000 --- a/docs/tutorial-basics/create-a-page.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Create a Page - -Add **Markdown or React** files to `src/pages` to create a **standalone page**: - -- `src/pages/index.js` → `localhost:3000/` -- `src/pages/foo.md` → `localhost:3000/foo` -- `src/pages/foo/bar.js` → `localhost:3000/foo/bar` - -## Create your first React Page - -Create a file at `src/pages/my-react-page.js`: - -```jsx title="src/pages/my-react-page.js" -import React from 'react'; -import Layout from '@theme/Layout'; - -export default function MyReactPage() { - return ( - -

My React page

-

This is a React page

-
- ); -} -``` - -A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page). - -## Create your first Markdown Page - -Create a file at `src/pages/my-markdown-page.md`: - -```mdx title="src/pages/my-markdown-page.md" -# My Markdown page - -This is a Markdown page -``` - -A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page). diff --git a/docs/tutorial-basics/deploy-your-site.md b/docs/tutorial-basics/deploy-your-site.md deleted file mode 100644 index 1c50ee0..0000000 --- a/docs/tutorial-basics/deploy-your-site.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Deploy your site - -Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**). - -It builds your site as simple **static HTML, JavaScript and CSS files**. - -## Build your site - -Build your site **for production**: - -```bash -npm run build -``` - -The static files are generated in the `build` folder. - -## Deploy your site - -Test your production build locally: - -```bash -npm run serve -``` - -The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/). - -You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**). diff --git a/docs/tutorial-basics/markdown-features.mdx b/docs/tutorial-basics/markdown-features.mdx deleted file mode 100644 index 35e0082..0000000 --- a/docs/tutorial-basics/markdown-features.mdx +++ /dev/null @@ -1,152 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Markdown Features - -Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**. - -## Front Matter - -Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/): - -```text title="my-doc.md" -// highlight-start ---- -id: my-doc-id -title: My document title -description: My document description -slug: /my-custom-url ---- -// highlight-end - -## Markdown heading - -Markdown text with [links](./hello.md) -``` - -## Links - -Regular Markdown links are supported, using url paths or relative file paths. - -```md -Let's see how to [Create a page](/create-a-page). -``` - -```md -Let's see how to [Create a page](./create-a-page.md). -``` - -**Result:** Let's see how to [Create a page](./create-a-page.md). - -## Images - -Regular Markdown images are supported. - -You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): - -```md -![Docusaurus logo](/img/docusaurus.png) -``` - -![Docusaurus logo](/img/docusaurus.png) - -You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them: - -```md -![Docusaurus logo](./img/docusaurus.png) -``` - -## Code Blocks - -Markdown code blocks are supported with Syntax highlighting. - -````md -```jsx title="src/components/HelloDocusaurus.js" -function HelloDocusaurus() { - return

Hello, Docusaurus!

; -} -``` -```` - -```jsx title="src/components/HelloDocusaurus.js" -function HelloDocusaurus() { - return

Hello, Docusaurus!

; -} -``` - -## Admonitions - -Docusaurus has a special syntax to create admonitions and callouts: - -```md -:::tip My tip - -Use this awesome feature option - -::: - -:::danger Take care - -This action is dangerous - -::: -``` - -:::tip My tip - -Use this awesome feature option - -::: - -:::danger Take care - -This action is dangerous - -::: - -## MDX and React Components - -[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**: - -```jsx -export const Highlight = ({children, color}) => ( - { - alert(`You clicked the color ${color} with label ${children}`) - }}> - {children} - -); - -This is Docusaurus green ! - -This is Facebook blue ! -``` - -export const Highlight = ({children, color}) => ( - { - alert(`You clicked the color ${color} with label ${children}`); - }}> - {children} - -); - -This is Docusaurus green ! - -This is Facebook blue ! diff --git a/docs/tutorial-extras/_category_.json b/docs/tutorial-extras/_category_.json deleted file mode 100644 index a8ffcc1..0000000 --- a/docs/tutorial-extras/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "label": "Tutorial - Extras", - "position": 3, - "link": { - "type": "generated-index" - } -} diff --git a/docs/tutorial-extras/img/docsVersionDropdown.png b/docs/tutorial-extras/img/docsVersionDropdown.png deleted file mode 100644 index 97e4164..0000000 Binary files a/docs/tutorial-extras/img/docsVersionDropdown.png and /dev/null differ diff --git a/docs/tutorial-extras/img/localeDropdown.png b/docs/tutorial-extras/img/localeDropdown.png deleted file mode 100644 index e257edc..0000000 Binary files a/docs/tutorial-extras/img/localeDropdown.png and /dev/null differ diff --git a/docs/tutorial-extras/manage-docs-versions.md b/docs/tutorial-extras/manage-docs-versions.md deleted file mode 100644 index ccda0b9..0000000 --- a/docs/tutorial-extras/manage-docs-versions.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Manage Docs Versions - -Docusaurus can manage multiple versions of your docs. - -## Create a docs version - -Release a version 1.0 of your project: - -```bash -npm run docusaurus docs:version 1.0 -``` - -The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created. - -Your docs now have 2 versions: - -- `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs -- `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs** - -## Add a Version Dropdown - -To navigate seamlessly across versions, add a version dropdown. - -Modify the `docusaurus.config.js` file: - -```js title="docusaurus.config.js" -export default { - themeConfig: { - navbar: { - items: [ - // highlight-start - { - type: 'docsVersionDropdown', - }, - // highlight-end - ], - }, - }, -}; -``` - -The docs version dropdown appears in your navbar: - -![Docs Version Dropdown](./img/docsVersionDropdown.png) - -## Update an existing version - -It is possible to edit versioned docs in their respective folder: - -- `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello` -- `docs/hello.md` updates `http://localhost:3000/docs/next/hello` diff --git a/docs/tutorial-extras/translate-your-site.md b/docs/tutorial-extras/translate-your-site.md deleted file mode 100644 index b5a644a..0000000 --- a/docs/tutorial-extras/translate-your-site.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Translate your site - -Let's translate `docs/intro.md` to French. - -## Configure i18n - -Modify `docusaurus.config.js` to add support for the `fr` locale: - -```js title="docusaurus.config.js" -export default { - i18n: { - defaultLocale: 'en', - locales: ['en', 'fr'], - }, -}; -``` - -## Translate a doc - -Copy the `docs/intro.md` file to the `i18n/fr` folder: - -```bash -mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/ - -cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md -``` - -Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French. - -## Start your localized site - -Start your site on the French locale: - -```bash -npm run start -- --locale fr -``` - -Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated. - -:::caution - -In development, you can only use one locale at a time. - -::: - -## Add a Locale Dropdown - -To navigate seamlessly across languages, add a locale dropdown. - -Modify the `docusaurus.config.js` file: - -```js title="docusaurus.config.js" -export default { - themeConfig: { - navbar: { - items: [ - // highlight-start - { - type: 'localeDropdown', - }, - // highlight-end - ], - }, - }, -}; -``` - -The locale dropdown now appears in your navbar: - -![Locale Dropdown](./img/localeDropdown.png) - -## Build your localized site - -Build your site for a specific locale: - -```bash -npm run build -- --locale fr -``` - -Or build your site to include all the locales at once: - -```bash -npm run build -``` diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 17d1dc5..1901b72 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -3,19 +3,19 @@ import type {Config} from '@docusaurus/types'; import type * as Preset from '@docusaurus/preset-classic'; const config: Config = { - title: 'Cloud Robotics Hub (Under Construction)', + title: 'Cloud Robotics Hub', tagline: 'Gathering information about Cloud Robotics for use by everyone.', favicon: 'img/favicon.ico', // Set the production url of your site here - url: 'https://cloud-robotics-wg.github.io', + url: 'https://cloudroboticshub.github.io/', // Set the // pathname under which your site is served // For GitHub pages deployment, it is often '//' - baseUrl: '/cloudroboticshub.github.io/', + baseUrl: '/', // GitHub pages deployment config. // If you aren't using GitHub pages, you don't need these. - organizationName: 'cloud-robotics-wg', // Usually your GitHub org/user name. + organizationName: 'cloudroboticshub', // Usually your GitHub org/user name. projectName: 'cloudroboticshub.github.io', // Usually your repo name. onBrokenLinks: 'throw', @@ -35,10 +35,6 @@ const config: Config = { { docs: { sidebarPath: './sidebars.ts', - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - // editUrl: - // 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, blog: { showReadingTime: true, @@ -50,49 +46,37 @@ const config: Config = { theme: { customCss: './src/css/custom.css', }, + gtag: { + trackingID: "G-W07RNQP7NT", + anonymizeIP: true, + } } satisfies Preset.Options, ], ], themeConfig: { - // Replace with your project's social card image: 'img/docusaurus-social-card.jpg', navbar: { title: 'Cloud Robotics Hub', logo: { alt: 'Cloud Robotics Hub Logo', - src: 'img/logo.svg', + src: 'img/logo.png', }, items: [ - // { - // type: 'docSidebar', - // sidebarId: 'tutorialSidebar', - // position: 'left', - // label: 'Tutorial', - // }, {to: '/blog', label: 'Blog', position: 'left'}, {to: '/meetings', label: 'Meetings', position: 'left'}, - {to: '/resources', label: 'Resources', position: 'left'}, + { + type: 'docSidebar', + sidebarId: 'resourcesSidebar', + position: 'left', + label: 'Resources', + }, {to: '/survey', label: 'State of Cloud Robotics', position: 'left'}, - // { - // href: 'https://github.com/facebook/docusaurus', - // label: 'GitHub', - // position: 'right', - // }, ], }, footer: { style: 'dark', links: [ - { - title: 'Docs', - items: [ - { - label: 'Tutorial', - to: '/docs/intro', - }, - ], - }, { title: 'Community', items: [ @@ -113,10 +97,17 @@ const config: Config = { label: 'Blog', to: '/blog', }, + { + label: 'GitHub', + to: 'https://github.com/cloudroboticshub/cloudroboticshub.github.io', + }, ], }, ], - copyright: `Copyright © ${new Date().getFullYear()} Cloud Robotics Working Group. Built with Docusaurus.`, + copyright: `Copyright © ${new Date().getFullYear()} Cloud Robotics Working Group. Built with Docusaurus.
+ Credits: UXWing at https://uxwing.com - see license terms. + `, + }, prism: { theme: prismThemes.github, diff --git a/package.json b/package.json index fc47c68..bb3bd32 100644 --- a/package.json +++ b/package.json @@ -43,5 +43,6 @@ }, "engines": { "node": ">=18.0" - } + }, + "packageManager": "yarn@1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" } diff --git a/sidebars.ts b/sidebars.ts index 1c51f3c..ebc2303 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -12,7 +12,7 @@ import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; */ const sidebars: SidebarsConfig = { // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{type: 'autogenerated', dirName: '.'}] + resourcesSidebar: [{type: 'autogenerated', dirName: 'resources'}] // But you can create a sidebar manually /* diff --git a/src/components/HomepageFeatures/index.tsx b/src/components/HomepageFeatures/index.tsx index d5811ef..fc871ba 100644 --- a/src/components/HomepageFeatures/index.tsx +++ b/src/components/HomepageFeatures/index.tsx @@ -11,31 +11,28 @@ type FeatureItem = { const FeatureList: FeatureItem[] = [ { title: 'Frequently Updated Blog', - Svg: require('@site/static/img/noun-blog-7024995.svg').default, + Svg: require('@site/static/img/blog-icon.svg').default, description: ( <> Published blogs with recent talks and news from the Cloud Robotics Working Group. - Blog by Dierys Design from Noun Project (CC BY 3.0) ), }, { title: 'Cloud Robotics Resources', - Svg: require('@site/static/img/noun-artificial-intelligence-2366500.svg').default, + Svg: require('@site/static/img/cloud-data-download-icon.svg').default, description: ( <> Find the best online resources available, curated by the Working Group. - Artificial Intelligence by ProSymbols from Noun Project (CC BY 3.0) ), }, { title: 'State of Cloud Robotics', - Svg: require('@site/static/img/noun-survey-7048795.svg').default, + Svg: require('@site/static/img/surveys-icon.svg').default, description: ( <> - See the latest crowd-sourced knowledge from the State of Cloud Robotics survey. - Survey by Kartika Sholehatin from Noun Project (CC BY 3.0) + See the latest crowd-sourced knowledge from the State of Cloud Robotics survey. ), }, diff --git a/src/components/HomepageFeatures/styles.module.css b/src/components/HomepageFeatures/styles.module.css index b248eb2..bb80531 100644 --- a/src/components/HomepageFeatures/styles.module.css +++ b/src/components/HomepageFeatures/styles.module.css @@ -8,4 +8,13 @@ .featureSvg { height: 200px; width: 200px; + margin-top: 30px; + margin-bottom: 30px; +} + +[data-theme='dark'] { +.featureSvg > path { + stroke: white; + fill: white; +} } diff --git a/src/css/custom.css b/src/css/custom.css index 298b4d9..49ffd24 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -13,15 +13,11 @@ --ifm-color-primary-light: #800E13; --ifm-color-primary-lighter: #AD2831; --ifm-color-primary-lightest: #B43C44; - /* --ifm-color-primary: #008000; - --ifm-color-primary-dark: #007200; - --ifm-color-primary-darker: #006400; - --ifm-color-primary-darkest: #004B23; - --ifm-color-primary-light: #70E000; - --ifm-color-primary-lighter: #9EF01A; - --ifm-color-primary-lightest: #CCFF33; */ --ifm-code-font-size: 95%; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); + + --ifm-link-color: var(--ifm-color-primary-lighter); + --ifm-link-hover-color: var(--ifm-color-primary-light); } /* For readability concerns, you should choose a lighter palette in dark mode. */ diff --git a/src/pages/index.tsx b/src/pages/index.tsx index e429779..4aeb7db 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -19,7 +19,7 @@ function HomepageHeader() {
+ to="/docs/resources/foreword"> Click here for curated resources!
diff --git a/src/pages/meetings/index.md b/src/pages/meetings/index.md new file mode 100644 index 0000000..755e3bb --- /dev/null +++ b/src/pages/meetings/index.md @@ -0,0 +1,523 @@ +# Meetings + +This page lists all the meetings that have occurred as part of the +working group. + +All meetings are public and held every two weeks from 1600-1700 UTC. +Please feel free to join us. There are some details below for extra +information: + +- ROS Discourse with tag wg-cloud-robotics. +- Google Group, where you can sign up to be notified of future updates. +- Google Meet room, where we meet online. +- Google Drive folder, where we keep all of our public documents. +- Open Robotics Community Calendar, where you can sign up to receive calendar reminders of our meetings. + +If you have an interesting topic of discussion for the group, please propose +that topic using the [Github +Issue](https://github.com/cloudroboticshub/cloudroboticshub.github.io/issues/33). + +I don't know what to do. Anomaly detection is probably a good discussion topic, +but Giovanni isn't going to be here. Antoine isn't either. We can just discuss +what we've found so far, I guess? + +Or just not have the session. Because people can't come. + +Seems like a shame to hold off on it. Maybe discuss how we've done so far? + + +## 2025-06-30: Logging & Observability Discussion (Upcoming) + +In the upcoming session, the group plans to go over the research performed to +this date. This includes the first preparation session and the previous session, +where we hosted a discussion with Benji Barash, Co-Founder and CEO of Roboto.AI. + +This will be a quieter, more relaxed session, as some of the members are unable +to attend. + +## 2025-06-16: Guest Expert Benji Barash from Roboto AI + +The group invited guest expert Benji Barash, Co-Founder and CEO at Roboto AI, to +discuss Logging & Observability. + +Benji leads Roboto AI, which provides an analytics engine for physical AI. The +company focuses on searching, transforming, and analyzing data from robots at +scale. Previously, Benji led engineering and science teams at Amazon Robotics, +with a focus on simulation and autonomy. + +The meeting became more of a presentation and Q&A, as Benji had slides and demos +ready to run. He showed very impressive tech from Roboto.AI, including the +ability to select a clip of robot data and search other datasets for similar +clips to find similar motions! + +The full meeting recording is available below. + + + +## 2025-06-02: Logging and Observability Preparation + +The group met to start researching Logging & Observability, with the intention +of gathering information for a community guide on the subject. Collectively, +they gathered the following points to consider going forwards: + +- **Format for recording logs and data**: structured data? Unstructured? Strings? JSON? Rosbags? +- **Online vs offline data upload**: collecting data offline for uploading later +- **Automatic incident detection**: is data collection constant, or triggered by + a specific event, or possibly by a developer? +- **Message publishing frequency**: a slower message publishing frequency often + indicates a system issue. +- **Cause of Issue**: determining the cause of the issue, if there is one. +- **Publishing Protocol**: MQTT, ROS2 topics, HTTP, or other. Advantages and + disadvantages of each method. +- **On demand vs constant logging** +- **Interfacing with observability tools**: publishing or formatting data to be + compatible with observability tools such as Prometheus +- **Live visualisation tools**: pros and cons of different tools such as RViz + and Foxglove. For example, Foxglove can provide a web link, which is easier to + share to other team members. +- **Levels of data upload**: minimal upload such as basic logs; rosbags with + debug data; developer-triggered upload of all robot information. +- **Custom downsampling**: topics can be downsampled depending on the quantity + of data and the bandwidth available. Another option is to extract important + information, such as the closest lidar point or the classes recognised from + the camera, to reduce the data uploaded. +- **Target user of data**: who will make use of the data? This affects how the + data is presented and used. + +The group ended by discussing potential guest experts that could help provide +information and insights for the guide. + +If you would like to see the meeting recording, it is available on YouTube: + + + +## 2025-05-19: Ideas for Cloud Robotics Guides + +The group met and used this time to discuss possible guides for publishing on +Cloud Robotics Hub. This would make our expertise available to the +public in an easily digestible format. + +As part of the meeting, we agreed to post a poll to the community to get a +better idea of priority on each suggested topic. The results are in [this blog post](/blog/community-guide-priorities). + +If you would like to see the meeting recording, it is available on YouTube: + + + +## 2025-05-05: Continued Discussion: Uploading Robot Data to the Cloud + +In this meeting, the group met to continue their discussion about uploading +robot data to the cloud. They expanded from the previous discussion to include +more important details about the data being uploaded, such as the moment it was +captured versus an incident, to give one example. + +The group also discussed difficulties with cloud data collection, such as the +difficulty of automatic anomaly detection, and how companies frequently have to +build their own data collection solution to meet their needs. + +If you would like to see the meeting recording, it is available on YouTube: + + + +## 2025-04-07: Discussion: Uploading Robot Data to the Cloud + +The group used this meeting to discuss uploading robot data to the cloud. +Together, they worked through the most useful information to convey to robotics +developers, resulting in the start of a [Google +Doc](https://docs.google.com/document/d/1kLqeBrKg0FgD0z2LoAgwufu_LryPktxgxVUlHmDsJII/edit?usp=drive_link) +to organise the most important data by category of robotics. + +The group finished by agreeing to continue the discussion in the following +session. + +If you would like to see the meeting recording, it is available on YouTube: + + + +## 2025-03-24: General Catch-Up + +In this shorter session, two members met and discussed the use of LLMs in +robotic and software development, then agreed on a new format that could be used +in future sessions: proposing a discussion topic in advance and using the +session to discuss that topic. + +Based on this agreement, a new [Github +Issue](https://github.com/cloudroboticshub/cloudroboticshub.github.io/issues/33) +can be used to propose discussion topics for future meetings. Anyone can post to +the issue and join in the discussion. + +If you would like to see the meeting recording, it is available on YouTube: + + + +## 2025-02-24: Robot Deployment Discussion + +In this session, the group discussed their preferences and issues with the most +popular deployment methods. The group agreed that distribution via Docker +containers was the best method, but still had issues, such as the large download +sizes of images. Later in the session, the group also discussed a possible +project to remotely disable particular functions of a robot remotely. + +If you would like to see the meeting recording, it is available on YouTube: + + + +## 2025-02-10: Testing KubeEdge (For Real, This Time) + +The group had their second meeting to try out KubeEdge, having heard more about +it from [Tomoya Fujita in a guest talk](/blog/tomoya-fujita-kubeedge). + +Two of the members had some success with the prerequisites for KubeEdge, but +neither were able to connect a Raspberry Pi to a cloud machine as an edge +device. They were able to get a Kubernetes cluster connecting to another machine +on the same network, treating it as an edge device and seeing ROS 2 traffic +between the two machines. + +The group summarised their experience of KubeEdge: + +> We found KubeEdge to be conceptually very powerful, and the functionality we +> did get working was very impressive. This looks to be an excellent way to +> manage robots or other edge devices at an enterprise level. However, we did +> have difficulties setting up KubeEdge for a Raspberry Pi at the edge. We think +> the following might be helpful to get others onboarded with KubeEdge: + +> 1. It would be great to have a complete reference setup. Set up an EC2 +> instance with an elastic IP, set up the K8s network from scratch, and get a +> Raspberry Pi (or VM on another machine) to join as an edge device. +> 2. Some instructions in the setup documentation assume prior knowledge. For +> example, in the KubeEdge example led-raspberrypi, the last step is to +> change the device Twin attribute, but the instruction does not say how to +> do so. +> 3. It would be good to have a way of setting up multicast for ROS 2 that +> doesn't require changes at the cluster admin level to adjust for changes in +> the ROS 2 network. For example, if the domain ID changes, a new multicast +> address must be enabled for the cluster, which requires cluster admin +> rights. The alternative is to configure both the multicast IP address and +> subscriber IP addresses for each pod, which is more complicated. + +If you would like to see the meeting recording, it is available on YouTube: + + + +## 2025-01-27: Finding KubeEdge Prerequisites + +This meeting, the group planned to meet to test out KubeEdge. After the meeting +started, the group realised that there were a number of prerequisites needed to +try KubeEdge, including an active Kubernetes cluster (preferably in the cloud) +and some hardware to deploy to, such as a Raspberry Pi with LED. + +The group agreed to set up the prerequisites and attempt the tryout session in +the next session. The group also agreed that for future tryout sessions, they +would read through prerequisites in advance to make sure the meeting can go +ahead. + +If you would like to watch the meeting, you can see the recording below. + + + +## 2025-01-13 + +The group had a general discussion of the latest in robotics news, including +NVIDIA Cosmos, the proliferation of humanoid robotics at present, what cloud +robotics encompasses, and what to do in the next meeting. The group settled on +doing a KubeEdge trial unless a guest speaker is available. + +If you would like to watch the meeting, you can see the recording below. + + + +## 2024-12-16 Guest Talk: Robotics Platform empowered by Cloud-Native Technologies (Tomoya Fujita) + +In this meeting, we hosted a talk by by [Tomoya Fujita](https://github.com/fujitatomoya), +a software engineer, contributor to ROS2 core, and well-respected community builder. + +Tomoya talked about a range of Cloud-Native Technologies he has worked on, and their +relevance to robotics. In particular, Tomoya has done a great deal of work on KubeEdge, +a platform built on Kubernetes that can be used to deploy software to robots as if they +are Kubernetes clusters. Some resources from his talk include: + +- [ROSCon 2023: ROS with Kubernetes / KubeEdge](https://roscon.ros.org/2023/talks/ROS_with_KubernetesKubeEdge.pdf) +- [Some examples to deploy ROS / ROS 2 with Kubernetes](https://github.com/fujitatomoya/ros_k8s) +- [Next-generation Robotics Platform for Edge/Cloud](https://static.sched.com/hosted_files/colocatedeventsna2024/15/Cilium%2BeBPF-Day-NA_Cilium-with-KubeEdge.v0.pdf) + +More information on the talk is available on the [blog post](/blog/tomoya-fujita-kubeedge), including a link to the recording posted on YouTube. + +If you are interested in seeing the entire meeting, the recording is available here: + + + +## 2024-12-02 | Testing Eclipse Zenoh + +In this meeting, the group spent the time trying out the workshop from Eclipse Zenoh that was used in the latest ROSCon. Together, they accomplished a few of the exercises and discussed the ease of setup, and some comments they could give as feedback. + +The workshop is available [from Github](https://github.com/ZettaScaleLabs/roscon2024_workshop). The group completed exercises 1, 2, and 5, then two members sent messages to each other using the instructions in exercise 3. + +The meeting recording is available below: + + + +## 2024-11-18 + +The group caught up on the latest robotics news and discussed GenAI in robotics and the start-ups using them. The group then agreed to focus on Eclipse Zenoh for its next meeting. + +If you would like to watch the meeting, you can see the recording below. + + + +## 2024-11-04 Guest Talk: Eclipse Zenoh and its offering for Cloud Connectivity (Julien Enoch) + +The group hosted a talk by [Julien Enoch](https://www.linkedin.com/in/julienenoch/), a Senior Solutions Architect at [ZettaScale Technology](https://www.zettascale.tech/) and [Eclipse Zenoh](https://github.com/eclipse-zenoh/zenoh) committer. + +Julien spoke about the Zenoh protocol, which can run everywhere, from micro-controllers to the Cloud; over TCP, UDP, QUIC, and Websockets. Zenoh provides a software router that can be deployed in any Cloud instance such as AWS EC2, and that can route the protocol between different subsystems. The talk also covered how this is particularly helpful for Connectivity in Cloud Robotics, with a video demonstration of controlling a robot in California from an RViz instance in France! + +If you would like to see the talk, which took the whole meeting time, see the recording below. + + + +## 2024-10-21 + +The group discussed recent conferences, possible resources for the Cloud Robotics Hub, and methods of working offline to accomplish more between meetings. The group also discussed their opinions on how the Working Group was doing, with the aim of recognising their successes and considering how to improve going forwards. + +The full meeting recording is available below. + + + +## 2024-10-07 Guest Talk: Enabling Usable and Reliable Cloud Robotics with FogROS2 (Kaiyuan Eric Chen) + +The group hosted a talk about [FogROS2](https://github.com/BerkeleyAutomation/FogROS2) presented by [Kaiyuan Eric Chen](https://keplerc.github.io/), a PhD student in the Department of Computer Sciences at UC Berkeley and a member of Berkeley Automation Lab working closely with [Ken Goldberg](https://goldberg.berkeley.edu/) and Jeffrey Ichnowski. + +More information about the presentation, including a summary of its content and some links, are available on the [blog post](/blog/eric-chen-fogros2). + +The group spent some time at the end discussing recent news in robotics, and the plan for the next meeting. + +The full meeting recording is available below. + + + +## 2024-09-23 Talk: CloudGripper (Florian Pokorny) + +The group hosted a talk about [CloudGripper](https://cloudgripper.org/), [An Open Source Cloud Robotics Testbed for Robotic Manipulation Research, Benchmarking and Data Collection at Scale](https://arxiv.org/abs/2309.12786) by [Florian Pokorny](https://www.csc.kth.se/~fpokorny/), Associate Professor of Machine Learning at [KTH Royal Institute Technology](https://www.kth.se/) and Co-Founder of [Scaleup Robotics](https://scaleuprobotics.com/). + +Here's a link to the [blog post and talk recording](/blog/florian-pokorny-cloudgripper). + +Find the full meeting recording below. + + + +## 2024-09-09 + +The group discussed the launch of the new Cloud Robotics Hub +site and discussed potential improvements. Akash Vibhute from Intrinsic/OpenRMF attended and we discussed him possibly presenting to the group, potentially along the lines of his upcoming ROSCon talk. + + + +## 2024-08-26 + +This meeting, the group discussed updates on the hub site, then +talked about the work occurring in academia for cloud robotics. + + + +## 2024-08-12 + +This meeting, the group took a look at progress on the Cloud +Robotics Hub website, then agreed tasks to split between themselves +to get the site closer to publishing. + + + +## 2024-07-29 Talk: ROS Tool (Christian Fritz) + +This meeting, the group got a first look at the upcoming Cloud +Robotics Hub website, then heard about rostool from group member +Christian Fritz of Transitive Robotics. + + + + + rostool Demo and Explanation -- Cloud Robotics Working Group + 2024-07-29 +{" "} +from Open Robotics on{" "} +Vimeo. + +## 2024-07-15 + +This meeting was the first meeting following the new format. The +group members shared news about the upcoming Cloud Robotics Hub site +and discussed methods of measuring latency between sending commands +and the robot responding. + +No meeting recording is available for this meeting. + +## 2024-07-01 + +In this meeting, we had a discussion about the purpose of the +working group going forwards. We decided to change the meeting +format to focus less on group member actions and more on being a +space for cloud robotics enthusiasts can share news with each other, +with more guest speakers. + +No meeting recording is available for this meeting. + +## 2024-06-17 + +We hosted a guest in this meeting, with Gui Manzato from Ekumen +talking about his experience working with all layers of the robotics +stack and contributing back to ROS and open source software. + +No meeting recording is available for this meeting. + +## 2024-06-03 + +This meeting was used to continue processing results from the State +of Cloud Robotics Survey. + + + + + Cloud Robotics Community Group Meeting 2024-06-03 +{" "} +from Open Robotics on{" "} +Vimeo. + +## 2024-05-20 + +This meeting, we continued to process our survey results, and +created an initial set of results to share with the community. The +resulting LinkedIn post is available{" "} +here. + +No meeting recording is available for this meeting. + +## 2024-05-06 + +This meeting was the first meeting we started to use to process our +survey results. + + + + + Cloud Robotics Community Group 2024-05-06 +{" "} +from Open Robotics on{" "} +Vimeo. + +## 2024-04-22 + +We used this meeting to continue drafting the questionnaire from the +previous meeting. + + + + + Cloud Robotics WG Meeting 2024-04-22 | Building State of Cloud + Robotics Survey +{" "} +from Open Robotics on{" "} +Vimeo. + +## 2024-04-08 + +We used this meeting to discuss how to gather data from folks +working with cloud robotics. We agreed to gather data using a public +questionnaire and began drafting it. The draft is available{" "} +here. + +No meeting recording is available for this meeting. + +## 2024-03-11 + +In this meeting, we discussed our long-term strategy and built a set +of slides that laid out that strategy. The slides are available here. + + + + + Cloud Robotics Working Group Meeting March 11th, 2024 +{" "} +from Open Robotics on Vimeo. + +## 2024-02-26 Talk: Asimovo (Christine Fraser) + +This was our first meeting as a community working group. We +introduced ourselves to each other, then had a presentation from +Christine Fraser and Ludo Stellingwerff from{" "} +Asimovo. + + + + + ROS Cloud Robotics Working Group Meeting February 25th, 2025 +{" "} +from Open Robotics on{" "} +Vimeo. diff --git a/src/pages/meetings/index.tsx b/src/pages/meetings/index.tsx deleted file mode 100644 index d45e3a7..0000000 --- a/src/pages/meetings/index.tsx +++ /dev/null @@ -1,270 +0,0 @@ -import Layout from "@theme/Layout"; -import Heading from "@theme/Heading"; -import BlogSidebar from "@theme/BlogSidebar"; - -export default function Meetings(): JSX.Element { - return ( - -
- -
- Cloud Robotics Working Group Meetings - -

- This page lists all the meetings that have occurred as part of the - working group. -

- -

- All meetings are public and held every two weeks from 1600-1700 UTC. - Please feel free to join us. There are some details below for extra - information: -

- - - Upcoming Meeting: 2024-08-26 -

- The group plans to use this meeting to discuss cloud robotics news, - and the updates made to the Cloud Robotics Hub website by the - group's members. -

- - 2024-08-12 -

- This meeting, the group took a look at progress on the Cloud - Robotics Hub website, then agreed tasks to split between themselves - to get the site closer to publishing. -

- - - 2024-07-29 -

- This meeting, the group got a first look at the upcoming Cloud - Robotics Hub website, then heard about rostool from group member - Christian Fritz of{" "} - Transitive Robotics. -

- -

- - rostool Demo and Explanation -- Cloud Robotics Working Group - 2024-07-29 - {" "} - from Open Robotics on{" "} - Vimeo. -

- - 2024-07-15 -

- This meeting was the first meeting following the new format. The - group members shared news about the upcoming Cloud Robotics Hub site - and discussed methods of measuring latency between sending commands - and the robot responding. -

-

No meeting recording is available for this meeting.

- - 2024-07-01 -

- In this meeting, we had a discussion about the purpose of the - working group going forwards. We decided to change the meeting - format to focus less on group member actions and more on being a - space for cloud robotics enthusiasts can share news with each other, - with more guest speakers. -

-

No meeting recording is available for this meeting.

- - 2024-06-17 -

- We hosted a guest in this meeting, with Gui Manzato from Ekumen - talking about his experience working with all layers of the robotics - stack and contributing back to ROS and open source software. -

-

No meeting recording is available for this meeting.

- - 2024-06-03 -

- This meeting was used to continue processing results from the State - of Cloud Robotics Survey. -

- -

- - Cloud Robotics Community Group Meeting 2024-06-03 - {" "} - from Open Robotics on{" "} - Vimeo. -

- - 2024-05-20 -

- This meeting, we continued to process our survey results, and - created an initial set of results to share with the community. The - resulting LinkedIn post is available{" "} - - here - - . -

-

No meeting recording is available for this meeting.

- - 2024-05-06 -

- This meeting was the first meeting we started to use to process our - survey results. -

- -

- - Cloud Robotics Community Group 2024-05-06 - {" "} - from Open Robotics on{" "} - Vimeo. -

- - 2024-04-22 -

- We used this meeting to continue drafting the questionnaire from the - previous meeting. -

- -

- - Cloud Robotics WG Meeting 2024-04-22 | Building State of Cloud - Robotics Survey - {" "} - from Open Robotics on{" "} - Vimeo. -

- - 2024-04-08 -

- We used this meeting to discuss how to gather data from folks - working with cloud robotics. We agreed to gather data using a public - questionnaire and began drafting it. The draft is available{" "} - - here - - . -

-

No meeting recording is available for this meeting.

- - 2024-03-11 -

- In this meeting, we discussed our long-term strategy and built a set - of slides that laid out that strategy. The slides are available{" "} - - here - - . -

- -

- - Cloud Robotics Working Group Meeting March 11th, 2024 - {" "} - from Open Robotics on{" "} - Vimeo. -

- - 2024-02-26 -

- This was our first meeting as a community working group. We - introduced ourselves to each other, then had a presentation from - Christine Fraser and Ludo Stellingwerff from{" "} - Asimovo. -

- -

- - ROS Cloud Robotics Working Group Meeting February 25th, 2025 - {" "} - from Open Robotics on{" "} - Vimeo. -

-
-
-
- ); -} diff --git a/src/pages/resources/index.module.css b/src/pages/resources/index.module.css deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/resources/index.tsx b/src/pages/resources/index.tsx deleted file mode 100644 index fbc3019..0000000 --- a/src/pages/resources/index.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import Layout from "@theme/Layout"; - -export default function Resources(): JSX.Element { - return ( - -
-
-

Resources

-

Curated resources from across the internet.

-
-
-
- ); -} diff --git a/src/pages/survey/index.md b/src/pages/survey/index.md index 8c4daba..379ea2c 100644 --- a/src/pages/survey/index.md +++ b/src/pages/survey/index.md @@ -137,7 +137,7 @@ business scenarios, blocking issues or challenges > Are there good, low-latency open source communication protocols for the cloud, particularly for video rendering? Are there any ROS integrations with webserver backends (such as django)? -We will answer questions like this one in the [resources](/resources) section of the website. Please help us with your own experience / opinion. +We will answer questions like this one in the [resources](/docs/resources/foreword) section of the website. Please help us with your own experience / opinion. > Are there any examples or demos that use multiple TurtleBot3 robots for multi-robot tasks? diff --git a/static/img/blog-icon.svg b/static/img/blog-icon.svg new file mode 100644 index 0000000..43298fc --- /dev/null +++ b/static/img/blog-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/cloud-data-download-icon.svg b/static/img/cloud-data-download-icon.svg new file mode 100644 index 0000000..b332552 --- /dev/null +++ b/static/img/cloud-data-download-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/docusaurus-social-card.jpg b/static/img/docusaurus-social-card.jpg deleted file mode 100644 index ffcb448..0000000 Binary files a/static/img/docusaurus-social-card.jpg and /dev/null differ diff --git a/static/img/docusaurus.png b/static/img/docusaurus.png deleted file mode 100644 index f458149..0000000 Binary files a/static/img/docusaurus.png and /dev/null differ diff --git a/static/img/favicon.ico b/static/img/favicon.ico index c01d54b..adde1cd 100644 Binary files a/static/img/favicon.ico and b/static/img/favicon.ico differ diff --git a/static/img/logo.png b/static/img/logo.png new file mode 100644 index 0000000..3d98357 Binary files /dev/null and b/static/img/logo.png differ diff --git a/static/img/logo.svg b/static/img/logo.svg deleted file mode 100644 index 9db6d0d..0000000 --- a/static/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/img/noun-artificial-intelligence-2366500.svg b/static/img/noun-artificial-intelligence-2366500.svg deleted file mode 100644 index 6a41066..0000000 --- a/static/img/noun-artificial-intelligence-2366500.svg +++ /dev/null @@ -1 +0,0 @@ -Created by ProSymbolsfrom the Noun Project \ No newline at end of file diff --git a/static/img/noun-blog-7024995.svg b/static/img/noun-blog-7024995.svg deleted file mode 100644 index 523838e..0000000 --- a/static/img/noun-blog-7024995.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -Created by Dierys Designfrom Noun Project \ No newline at end of file diff --git a/static/img/noun-survey-7048795.svg b/static/img/noun-survey-7048795.svg deleted file mode 100644 index 4f30b6f..0000000 --- a/static/img/noun-survey-7048795.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -Created by Kartika Sholehatinfrom Noun Project \ No newline at end of file diff --git a/static/img/surveys-icon.svg b/static/img/surveys-icon.svg new file mode 100644 index 0000000..ec56ba5 --- /dev/null +++ b/static/img/surveys-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/undraw_docusaurus_mountain.svg b/static/img/undraw_docusaurus_mountain.svg deleted file mode 100644 index af961c4..0000000 --- a/static/img/undraw_docusaurus_mountain.svg +++ /dev/null @@ -1,171 +0,0 @@ - - Easy to Use - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/undraw_docusaurus_react.svg b/static/img/undraw_docusaurus_react.svg deleted file mode 100644 index 94b5cf0..0000000 --- a/static/img/undraw_docusaurus_react.svg +++ /dev/null @@ -1,170 +0,0 @@ - - Powered by React - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/undraw_docusaurus_tree.svg b/static/img/undraw_docusaurus_tree.svg deleted file mode 100644 index d9161d3..0000000 --- a/static/img/undraw_docusaurus_tree.svg +++ /dev/null @@ -1,40 +0,0 @@ - - Focus on What Matters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -