In just four weeks, a team of the best robotics researchers from the
University of Southern Denmark has succeeded in developing the world’s
first fully automatic throat swab robot, scheduled to swab the first
patients for Covid-19 already by late June.
With a 3D printed, specially designed disposable tool, the robot holds a
swab and hits the exact spot in the throat from which the sample is to be
collected. Subsequently, the robot puts the swab into a glass and screws
the lid on to seal the sample. And the researchers have tested the robot.
– I was one of the first to be swabbed by the robot. It went really well.
I’m still sitting here, laughs Professor Thiusius Rajeeth Savarimuthu of
SDU Robotics:
– I was surprised at how softly the robot managed to land the swab at the
spot in the throat where it was supposed to hit, so it was a huge success.
Work around the clock
Thiusius Rajeeth Savarimuthu is in charge of the team of ten researchers
who have been working around the clock in the Industry 4.0 Lab at the
University of Southern Denmark to develop the prototype as quickly as
possible, so that the healthcare staff avoids the risk of infection when
carrying out throat swabs.
– We have successfully demonstrated the world’s first fully automatic
throat swab and delivered a “Proof of concept” of the processes in a
robotized throat swab, says Thiusius Rajeeth Savarimuthu.
- System.Web.HttpUnhandledException (0x80004005): An unhandled exception occurred. ---> System.Web.HttpCompileException (0x80004005): c:\home\site\wwwroot\Views\Article\ArticleQuote.cshtml(17): error CS1061: 'Cabana.SDU.Feature.Article.ArticleQuote' does not contain a definition for 'Text' and no extension method 'Text' accepting a first argument of type 'Cabana.SDU.Feature.Article.ArticleQuote' could be found (are you missing a using directive or an assembly reference?)
- at System.Web.Compilation.BuildManager.PostProcessFoundBuildResult(BuildResult result, Boolean keyFromVPP, VirtualPath virtualPath)
- at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
- at System.Web.Compilation.BuildManager.GetBuildResultFromCacheInternal(String cacheKey, Boolean keyFromVPP, VirtualPath virtualPath, Int64 hashCode, Boolean ensureIsUpToDate)
- at System.Web.Compilation.BuildManager.GetVPathBuildResultFromCacheInternal(VirtualPath virtualPath, Boolean ensureIsUpToDate)
- at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
- at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
- at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
- at System.Web.Compilation.BuildManager.GetCompiledType(VirtualPath virtualPath)
- at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
- at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
- at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
- at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
- at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
- at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
- at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
- at Sitecore.Mvc.Pipelines.MvcEvents.Exception.ShowAspNetErrorMessage.ShowErrorMessage(ExceptionContext exceptionContext, ExceptionArgs args)
- at Sitecore.Mvc.Pipelines.MvcEvents.Exception.ShowAspNetErrorMessage.Process(ExceptionArgs args)
- at (Object , Object )
- at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
- at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
- at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
- at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args)
- at Sitecore.Mvc.Filters.PipelineBasedRequestFilter.OnException(ExceptionContext exceptionContext)
- at System.Web.Mvc.ControllerActionInvoker.InvokeExceptionFilters(ControllerContext controllerContext, IList`1 filters, Exception exception)
- at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
- at System.Web.Mvc.Controller.ExecuteCore()
- at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
- at Sitecore.Mvc.Controllers.ControllerRunner.ExecuteController(Controller controller)
- at Sitecore.Mvc.Controllers.ControllerRunner.Execute(TextWriter writer)
- at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Render(Renderer renderer, TextWriter writer, RenderRenderingArgs args)
- at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Process(RenderRenderingArgs args)
- at Helpfulcore.RenderingExceptions.Pipelines.RenderRendering.ExecuteRenderer.Process(RenderRenderingArgs args)
Test, test, test says WHO, but at the same time, health professionals are
at risk of becoming infected when doing throat swabs on potential corona
patients.
Therefore, a throat swab robot was also high on the wish list when
Professor Thiusius Rajeeth Savarimuthu, after Covid-19 made its entry in
March, spoke with his research colleagues at Odense University Hospital,
OUH.
– There are prospects in developing a throat swab robot so that robots can
take over the throat swabbing work both in relation to Covid-19, but also
in all future viruses, says Thiusius Rajeeth Savarimuthu.
OUH Director welcomes robot
In this, Medical Director Kim Brixen from OUH fully agrees. He has with
keen interest been following the development of the robot in the hands of
the researchers. He also sees great advantage in the fact that the robot
doesn’t get tired and bored of monotonous work.
– Currently, healthcare professionals are carrying out throat swabs for
Covid-19; but working conditions can be a challenge. The task entails long
working days of monotonous work. At the same time, the employees are in
great demand in other functions, says Kim Brixen, pointing out that the
robot can also play a leading role in a new strategy against more common
types of flu:
– Large-scale testing is part of our community’s reopening strategy. The
robot has great potential for mass screening for Covid-19 in the healthcare
sector, but also in connection with border control or at airports. At the
same time, we see that regular flu seems to have decreased during the
lockdown. This may imply that we may need to rethink our strategy against
the flu.
Throat swab robot for sale
In the shadow of the corona, the researchers have in record time managed to
develop a robot that can safely be entrusted with the swab. Now the robot
is ready to move out of the lab.
Investors
Investors consist of a consortium in which the Swedish venture fund Norrsken Foundation joins 50 per cent, while REInvest Robotics and SDU share the last 50 per cent. Vækstfonden supports with DKK 2 million as a convertible loan.
– We have created the company Lifeline Robotics A/S, where our vision is to
get the robot out to do good on the global market as quickly as possible:
in airports, in refugee camps or where else it might be needed, says Søren
Stig from Lifeline Robotics.
While researchers have been struggling with robotics, power management and
vision technology, Søren Stig has been struggling to get investment in
place and bring together a strong team aiming at turning the throat swab
robot into a commercial success internationally, in line with other proud
robotic bigwigs.
Ready for the second wave
Heavyweights like co-founder of Universal Robots and investment company
REInvest Robotics, Esben Østergaard, and Vækstfonden support the project,
and if everything goes according to the ambitious plan, the robot will be
swabbing the first patient’s throat in a month.
– The Covid-19 pandemic abounds. The ambition is, therefore, that we must
get on the market as soon as possible. The plan is that we have a prototype
that swabs patients by the end of June, and that the robot is completed and
ready for the market this fall when the second Covid-19 wave hits, says
Søren Stig, director of Lifeline robotics:
– Everyone on the team is working incredibly hard. If our plan holds, we
will have achieved in 3-4 months what usually takes three years.
- System.Web.HttpUnhandledException (0x80004005): An unhandled exception occurred. ---> System.Web.HttpCompileException (0x80004005): c:\home\site\wwwroot\Views\Article\ArticleQuote.cshtml(17): error CS1061: 'Cabana.SDU.Feature.Article.ArticleQuote' does not contain a definition for 'Text' and no extension method 'Text' accepting a first argument of type 'Cabana.SDU.Feature.Article.ArticleQuote' could be found (are you missing a using directive or an assembly reference?)
- at System.Web.Compilation.BuildManager.PostProcessFoundBuildResult(BuildResult result, Boolean keyFromVPP, VirtualPath virtualPath)
- at System.Web.Compilation.BuildManager.GetBuildResultFromCacheInternal(String cacheKey, Boolean keyFromVPP, VirtualPath virtualPath, Int64 hashCode, Boolean ensureIsUpToDate)
- at System.Web.Compilation.BuildManager.GetVPathBuildResultFromCacheInternal(VirtualPath virtualPath, Boolean ensureIsUpToDate)
- at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
- at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
- at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
- at System.Web.Compilation.BuildManager.GetCompiledType(VirtualPath virtualPath)
- at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
- at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
- at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
- at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
- at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
- at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
- at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
- at Sitecore.Mvc.Pipelines.MvcEvents.Exception.ShowAspNetErrorMessage.ShowErrorMessage(ExceptionContext exceptionContext, ExceptionArgs args)
- at Sitecore.Mvc.Pipelines.MvcEvents.Exception.ShowAspNetErrorMessage.Process(ExceptionArgs args)
- at (Object , Object )
- at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
- at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
- at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
- at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args)
- at Sitecore.Mvc.Filters.PipelineBasedRequestFilter.OnException(ExceptionContext exceptionContext)
- at System.Web.Mvc.ControllerActionInvoker.InvokeExceptionFilters(ControllerContext controllerContext, IList`1 filters, Exception exception)
- at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
- at System.Web.Mvc.Controller.ExecuteCore()
- at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
- at Sitecore.Mvc.Controllers.ControllerRunner.ExecuteController(Controller controller)
- at Sitecore.Mvc.Controllers.ControllerRunner.Execute(TextWriter writer)
- at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Render(Renderer renderer, TextWriter writer, RenderRenderingArgs args)
- at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Process(RenderRenderingArgs args)
- at Helpfulcore.RenderingExceptions.Pipelines.RenderRendering.ExecuteRenderer.Process(RenderRenderingArgs args)
![Portrætbillede af Esben Østergaard](https://www.sdu.dk/-/media/images/nyheder_sduk/nyheder2020/portraetter/esben-oestergaard-490x295.jpg)
Co-founder of Universal Robots and REInvest Robotics, Esben Østergaard decided early in the process to invest in the development of a throat swab robot. Here is his explanation:
Like so many others, I was horrified to see that the Covid-19 crisis was rapidly developing. I felt I needed to do something. With my background, the obvious choice was to automate the testing process as testing seems to be the key to dealing with this kind of crisis. The current manual process is both difficult and cumbersome, and a machine reduces the risk of infection among healthcare professionals and patients, as well as providing higher quality test results. It is no easy task to get a robot to perform a throat swab, but fortunately in Denmark we have world-class knowledge within robots and machine safety, allowing us to develop just such a robot in record time.