<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Jupyter Blog - Carlos Herrero</title><link href="https://jasongrout.github.io/medium-archive/pelican/" rel="alternate"/><link href="https://jasongrout.github.io/medium-archive/pelican/feeds/author-carlos-herrero.atom.xml" rel="self"/><id>https://jasongrout.github.io/medium-archive/pelican/</id><updated>2021-01-08T11:15:00+00:00</updated><subtitle>The Project Jupyter blog: news, releases, and community stories, archived from blog.jupyter.org.</subtitle><entry><title>Dashboarding with JupyterLab 3</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2021/dashboarding-with-jupyterlab-3/" rel="alternate"/><published>2021-01-08T10:25:00+00:00</published><updated>2021-01-08T11:15:00+00:00</updated><author><name>Carlos Herrero</name></author><id>tag:jasongrout.github.io,2021-01-08:/medium-archive/pelican/posts/2021/dashboarding-with-jupyterlab-3/</id><summary type="html">&lt;p&gt;Project Jupyter offers a complete suite of open-source tools for the scientific computing community, reaching from the exploratory phase…&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Project Jupyter offers a complete suite of open-source tools for the scientific computing community, reaching from the exploratory phase of a project to the presentation of the results. In this last but not least phase is where Voilà takes place, &lt;strong&gt;turning a technical document such as Notebook into an interactive presentation or a stand-alone web app ready to be shared with non-technical readers&lt;/strong&gt;. You can learn more about Voilà in &lt;a href="/posts/2019/and-voila/"&gt;this blog post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Voilà is an easy-to-use command-line tool that shines in its simplicity and flexibility. All its versatility comes from a custom template system built upon Jinja templates that allows everyone to create a custom UI to share Jupyter Notebooks. Examples of the versatility provided for the template system are &lt;a href="/posts/2019/a-slideshow-template-for-voila-apps/"&gt;&lt;em&gt;voila-reveal&lt;/em&gt;&lt;/a&gt; and &lt;a href="/posts/2019/a-slideshow-template-for-voila-apps/"&gt;&lt;em&gt;voila-gridstack&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Voila-gridstack&lt;/em&gt; is a Voilà template started by &lt;a href="https://github.com/btel"&gt;Bartosz Telenczuk&lt;/a&gt; to &lt;strong&gt;turn notebooks into dashboards&lt;/strong&gt; following the specification introduced by the legacy &lt;em&gt;jupyter-dashboards&lt;/em&gt; project. The idea behind is to be able to change the layout of the cells to re-configure your dashboards using drag-and-drop. Once you have your desired layout, its configuration stays in the metadata of the notebook. This makes it simple to carry around or share the notebook and its layout configuration.&lt;/p&gt;
&lt;p&gt;With the release of JupyterLab 3.0, we wanted to update the &lt;em&gt;voila-gridstack&lt;/em&gt; template by adding an editor for JupyterLab.&lt;/p&gt;
&lt;h2 id="configure-your-layout"&gt;Configure your layout&lt;/h2&gt;
&lt;p&gt;The first way to open the &lt;em&gt;voila-gridstack&lt;/em&gt; editor is by right-clicking on the notebook and selecting open with “Voilà Gridstack”. The editor is itself a JupyterLab Document Widget, which can be seen as another view of the same notebook document. The editor can also be launched from the classic notebook with a toolbar button.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Opening JupyterLab-Gridstack" src="https://jasongrout.github.io/medium-archive/pelican/posts/2021/dashboarding-with-jupyterlab-3/images/001-1_m3zuJtMenNyGL-0R2nz7Cg.mp4" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Opening JupyterLab-Gridstack&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Once the editor is open, every cell is decorated with a toolbar as a drag-and-drop handle and a button to remove the cell from the dashboard. When removing a cell, it is just marked as hidden in the metadata but it is not deleted from the notebook file. Besides, handles are provided for resizing cells in the layout.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Configuring your layout" src="https://jasongrout.github.io/medium-archive/pelican/posts/2021/dashboarding-with-jupyterlab-3/images/002-1_u0AnafiS2HtXhCiCMg25cA.mp4" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Configuring your layout&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;When opening the editor for the first time in a new notebook, the metadata of the notebook is modified to follow &lt;em&gt;jupyter-dashboards&lt;/em&gt;’ specification. By default, you will see an empty editor. To add new cells just drag them from the notebook view. It is not possible to add cells from another notebook.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Adding new cells" src="https://jasongrout.github.io/medium-archive/pelican/posts/2021/dashboarding-with-jupyterlab-3/images/003-1_t4EW3oCIrt5FaMXUyjYPFw.mp4" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Adding new cells&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Finally, you can save the layout into the metadata of the notebook by clicking the “save” button or with the &lt;code&gt;ctrl+s&lt;/code&gt; shortcut and then it’s time to hit the render button and Voilà! You will see your layout as a stand-alone web app.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Voilà! Your stand-alone web app" src="https://jasongrout.github.io/medium-archive/pelican/posts/2021/dashboarding-with-jupyterlab-3/images/004-1_y6-MX2tjbBavUr3GHFDnIw.mp4" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Voilà! Your stand-alone web app&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="try-it-online"&gt;Try it online!&lt;/h2&gt;
&lt;p&gt;You can try the &lt;a href="https://github.com/voila-dashboards/voila-gridstack"&gt;j&lt;em&gt;upyterlab-gridstack&lt;/em&gt;&lt;/a&gt; extension online without installing anything by just clicking on the following image:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mybinder.org/v2/gh/voila-dashboards/voila-gridstack/stable?urlpath=lab/tree/examples"&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2021/dashboarding-with-jupyterlab-3/images/005-1_JsZ-IeoC7225JzNIHR1acA.webp" alt="https://mybinder.org/v2/gh/voila-dashboards/voila-gridstack/stable?urlpath=/voila/tree/examples/scotch_dashboard.ipynb" loading="lazy" data-body-image=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Voila-gridstack&lt;/em&gt; is available as a conda package, and you can easily install it by typing the following command in a conda environment:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;mamba install -c conda-forge jupyterlab voila-gridstack
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="acknowledgements"&gt;Acknowledgements&lt;/h2&gt;
&lt;p&gt;The development of Voilà and related packages at &lt;a href="https://twitter.com/QuantStack"&gt;QuantStack&lt;/a&gt; is sponsored by &lt;a href="http://www.techatbloomberg.com"&gt;&lt;strong&gt;Bloomberg&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The example notebook used as an example in this post was one of the example notebooks of the legacy Jupyter dashboards project.&lt;/p&gt;
&lt;h2 id="about-the-authors"&gt;About the authors&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://twitter.com/CarlosHerreroB"&gt;Carlos Herrero&lt;/a&gt; is a Computer Engineer passionate about AI and its applications to robotics. Currently working at QuantStack helping to develop Open Source projects.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Carlos Herrero" src="https://jasongrout.github.io/medium-archive/pelican/posts/2021/dashboarding-with-jupyterlab-3/images/006-1_y3NheY8vpXLUDnh7Cpnruw.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Carlos Herrero&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a href="https://twitter.com/jtpio"&gt;Jeremy Tuloup&lt;/a&gt; is a Scientific Software Developer at QuantStack, working on JupyterLab, Voilà, and various other projects within the Jupyter ecosystem.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Jeremy Tuloup" src="https://jasongrout.github.io/medium-archive/pelican/posts/2021/dashboarding-with-jupyterlab-3/images/007-1_TSPSpj2D0UODcXXAgbHOXg.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Jeremy Tuloup&lt;/figcaption&gt;
&lt;/figure&gt;
</content><category term="dashboards"/><category term="JupyterLab"/></entry><entry><title>JupyterLab, the Cloud Robotics Command Station</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyterlab-ros/" rel="alternate"/><published>2020-08-11T13:19:00+00:00</published><updated>2020-08-11T13:20:00+00:00</updated><author><name>Carlos Herrero</name></author><id>tag:jasongrout.github.io,2020-08-11:/medium-archive/pelican/posts/2020/jupyterlab-ros/</id><summary type="html">&lt;p&gt;Building a cloud robotics development platform using JupyterLab and ROS&lt;/p&gt;
</summary><content type="html">&lt;figure&gt;
&lt;img alt="JupyterLab-ROS with Voilà to quickly make a standalone web app" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyterlab-ros/images/001-1_zfaBPxiCzlnoNoKrVpcrIA.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;JupyterLab-ROS with Voilà to quickly make a standalone web app&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The ROS open-source project (Robot Operating System) has become a &lt;em&gt;de-facto&lt;/em&gt; industry standard in the robotics community. Very much like with Project Jupyter, a large collection of software has been built upon well-specified communication protocols. ROS has become a rich ecosystem of standardized tools for building and distributing ROS-based software, exploratory robotics development, and much more.&lt;/p&gt;
&lt;p&gt;With &lt;em&gt;Industry 4.0&lt;/em&gt;, the number of robots and smart devices has been increasing exponentially. We are talking about fully automated factories with hundreds of robots and thousands of connected sensors, generating large amounts of raw data.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There is an opportunity in bridging the ROS and the open-source data science ecosystems and tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For this reason, we set ourselves to bring together these ecosystems,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;by producing a collection of JupyterLab extensions for ROS, turning JupyterLab into a &lt;em&gt;cloud robotics command station&lt;/em&gt;,&lt;/li&gt;
&lt;li&gt;by integrating ROS packages with conda / mamba package management system, to enable their installation alongside other open-source data-science packages.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="jupyterlab-the-cloud-robotics-command-station"&gt;&lt;strong&gt;JupyterLab, the cloud robotics command station&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;While the traditional developer tools from the ROS stack such as RViz are desktop-based, we think that a robotics development environment running in a web browser would provide a lot of flexibility. Also, the ideal robotics developer platform should be plugin-based, and easily extensible to account for the diversity of use cases to enable, from simple interactive scripting to visualization or large datasets. Finally, we should build this environment upon broadly adopted foundations, with open governance, and not let a single entity hold the keys to the ROS ecosystem.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Jupyter is a natural candidate to serve as the foundation for a web-based robotics development environment.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;JupyterLab is a web-based interactive development environment that has many of the much-needed features&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In JupyterLab, everything is a plugin, including the core components to the application. Anyone can produce a “remix” of core and third-party JupyterLab extensions to their needs.&lt;/li&gt;
&lt;li&gt;Very much in the spirit of ROS, one of the keys to Jupyter’s success is that the project was built upon well-documented and specified protocols and file formats that anyone could implement.&lt;/li&gt;
&lt;li&gt;Jupyter is a multi-stakeholder project, not backed by a single corporation, but by a community of developers at a variety of companies, universities, as well as individual contributors.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Today, we are announcing the first beta of JupyterLab-ROS, a collection of JupyterLab plugins to integrate ROS with the JupyterLab platform. We combine the best of the data-science and robotics worlds to help developers build custom solutions for the industry. ROS can run in a high-performance server while JupyterLab is accessed in a web-browser (on Windows, OS X or Linux).&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="JupyterLab-ROS" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyterlab-ros/images/002-1_98A8hXDk_cgVqdoA6EPXAg.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;JupyterLab-ROS&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;JupyterLab-ROS automatically starts a rosmaster and rosbridge_server making all the painful setup of WebSockets connections completely transparent to users. A status bar widget allows you to start and stop the rosmaster server with a simple click and displays its state in real-time. Internally this widget runs a launch file which can be changed from the JupyterLab settings UI to launch additional nodes.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Master status widget" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyterlab-ros/images/003-1_TA29a27cM-21mdTkdBQQxA.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Master status widget&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Another important component of the ROS stack is RViz, a desktop-based 3-D visualization tool. It’s web-based counterpart in JupyterLab is Zethus, started by Rapyuta Robotics. This plugin supports most of the display types supported by RViz. It also provides an info panel that displays the raw messages in realtime, and a web-based version of rqt_graph for visualizing the ROS node graph.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Zethus" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyterlab-ros/images/004-1_lzap6vG9lEBSQsg9rj7zog.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Zethus&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;A robotics station would be incomplete without a tool for debugging. For that purpose, ROS provides rosconsole, a package which allows developers to send messages to rosout and make them available on every node. The console gives access to these debugging messages in JupyterLab and provides additional features such as filtering by level and by node.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Log Console" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyterlab-ros/images/005-1_OAsQ5PQoERlx2Tmex25aLg.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Log Console&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="robotics-notebooks"&gt;Robotics Notebooks&lt;/h2&gt;
&lt;p&gt;A key component to the Jupyter stack is the Notebook, an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. It’s frequently used to do data cleaning and transformation, numerical simulation, statistical modelling, data visualization, machine learning etc.&lt;/p&gt;
&lt;p&gt;The notebook could be the perfect tool for robotics researchers and educators to make (and share) experiments in control algorithms, working in a dynamic and interactive development environment that allows quick prototyping and exploratory analysis while having access to the sophisticated mathematical libraries already well integrated with Jupyter. It can be tedious to have a different platform for interacting with robots and processing the data obtained from these, JupyterLab-ROS combines both toolsets and enables an integrated workflow.&lt;/p&gt;
&lt;p&gt;At the same time, many projects are becoming more and more interdisciplinary. Currently, it is common to see projects mixing topics like machine learning and robotics. JupyterLab-ROS opens a new world of possibilities for machine learning researchers that are interested in applying their models to robots: now they have the possibility of connecting a robot to a development environment that they are very familiar with.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/RoboStack/jupyter-ros"&gt;JupyROS&lt;/a&gt; is another powerful library that leverages &lt;a href="https://github.com/jupyter-widgets/ipywidgets/"&gt;ipywidgets&lt;/a&gt; and &lt;a href="https://github.com/bqplot/bqplot"&gt;bqplot&lt;/a&gt; to integrate ROS in Jupyter Notebooks, being able to show real time plots from ROS messages and create intuitive forms to control robots in minutes.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Interactive Robotics in the Jupyter Notebook, with live plotting" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyterlab-ros/images/006-1_GN-BDT8ZT8GOcVZPKb44cg.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Interactive Robotics in the Jupyter Notebook, with live plotting&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="ros-package-management"&gt;&lt;strong&gt;ROS Package management&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Modern scientific computing applications typically depend on a large number of libraries. &lt;a href="https://conda-forge.org/"&gt;Conda-forge&lt;/a&gt; is a community initiative to package scientific libraries for the conda package manager, and has become a &lt;em&gt;de-facto&lt;/em&gt; standard source of packages for the scientific computing community, with tens of thousands of available packages, and thousands of contributors.&lt;/p&gt;
&lt;p&gt;During the last year, we have worked hard to package more and more of ROS as &lt;em&gt;conda packages&lt;/em&gt;. Conda-packages for ROS Melodic, including RViz are now available on all three operating systems! You can find the packages on the &lt;a href="https://anaconda.org/robostack"&gt;RoboStack channel&lt;/a&gt; (a more detailed blog post about this is going to follow soon).&lt;/p&gt;
&lt;p&gt;Conda can be used to create virtual environments for ROS projects, which makes it possible to install Melodic, Kinect and Dashing side-by-side on the same Linux system, and have exact control over package versions.&lt;/p&gt;
&lt;p&gt;We are also working on &lt;a href="https://github.com/TheSnakePit/mamba"&gt;Mamba&lt;/a&gt;, a conda-compatible package manager implemented in C++. Together with &lt;a href="https://github.com/TheSnakePit/boa"&gt;Boa&lt;/a&gt; this effort will help to continuously build and release ROS packages on conda.&lt;/p&gt;
&lt;h2 id="try-it-online"&gt;Try it online!&lt;/h2&gt;
&lt;p&gt;You can try the JupyterLab-ROS extension online without installing anything by just clicking on the following binder link:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mybinder.org/v2/gh/RoboStack/jupyterlab-ros/master?urlpath=lab/tree/examples"&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyterlab-ros/images/007-1_PZkzz4bGGPEyHlx-bbNRHg.webp" alt="https://mybinder.org/v2/gh/RoboStack/jupyterlab-ros/master?urlpath=lab/tree/examples" loading="lazy" data-body-image=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;JupyterLab-ROS is under active development. We are working on new features such as a rosbag widget to play and record bag files and improving existing ones like the roslaunch widget. If you are interested in contributing to JupyterLab-ROS you can find the code at &lt;a href="https://github.com/RoboStack/jupyterlab-ros"&gt;this repository&lt;/a&gt; in the RoboStack organization. Contributions are always welcome!&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;You can install JupyterLab-ROS using Mamba, the first step to create a new environment with JupyterLab and the ROS packages necessary, then you can install the extension.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;mamba create -n test -c conda-forge -c robostack python=3.6 nodejs=12 jupyterlab ros-melodic-ros-core ros-melodic-rosauth ros-melodic-rospy ros-melodic-rosbridge-suite ros-melodic-rosbag ros-melodic-tf2-web-republisher
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;conda activate test
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pip install jupyter-ros-server
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you have any questions don’t hesitate to contact us on the &lt;a href="https://gitter.im/RoboStack/Lobby"&gt;RoboStack&lt;/a&gt; or &lt;a href="https://gitter.im/QuantStack/Lobby"&gt;QuantStack&lt;/a&gt; chats.&lt;/p&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/vad9ZAUyw7k" title="JupyterLab ROS Demo" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;This work has many collaborators around the world, and we are especially grateful to &lt;a href="https://github.com/chaitanya-deep"&gt;Deep Chaitanya&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/tocttou"&gt;Ashish Chaudhary&lt;/a&gt; from Rapyuta Robotics, &lt;a href="https://github.com/seanyen"&gt;Sean Yen&lt;/a&gt; from Microsoft for his amazing work on vinca that automagically generates the conda-recipes, &lt;a href="https://github.com/Tobias-Fischer"&gt;Tobias Fischer&lt;/a&gt; for many patches and pushing us to bring OS X support to the conda packages as well. Many thanks to &lt;a href="https://github.com/jtpio"&gt;Jeremy Tuloup&lt;/a&gt; for his help with the JupyterLab extension system.&lt;/p&gt;
&lt;h2 id="about-the-authors"&gt;About the authors&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://twitter.com/wuoulf"&gt;Wolf Vollprecht&lt;/a&gt; works as a scientific and robotics software developer for QuantStack in Paris and Berlin.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyterlab-ros/images/008-1_HnFdxHmGARUXhanv9pDCYg.webp" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/CarlosHerreroB"&gt;Carlos Herrero&lt;/a&gt; is a Computer Engineer passionate about AI and his applications on robotics. Currently working at QuantStack helping to develop Open Source projects.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyterlab-ros/images/009-1_uyE3rS6qzPDbNAJE5Mfx1A.webp" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
</content><category term="JupyterLab"/><category term="robotics"/></entry></feed>