* Apr 20, 2022


Python  [ Any help with this error in Scipy minimize function? ](/threads/any-
help-with-this-error-in-scipy-minimize-function.1044973/)


###  Related Topics


    _______________________________________________________________________________ ERROR collecting test session _______________________________________________________________________________

    ..\..\..\..\anaconda3\envs\flaskblog2\lib\importlib\__init__.py:126: in import_module

        return _bootstrap._gcd_import(name[level:], package, level)

    <frozen importlib._bootstrap>:1050: in _gcd_import

        ?

    <frozen importlib._bootstrap>:1027: in _find_and_load

        ?

    <frozen importlib._bootstrap>:992: in _find_and_load_unlocked

        ?

    <frozen importlib._bootstrap>:241: in _call_with_frames_removed

        ?

    <frozen importlib._bootstrap>:1050: in _gcd_import

        ?

    <frozen importlib._bootstrap>:1027: in _find_and_load

        ?

    <frozen importlib._bootstrap>:1006: in _find_and_load_unlocked

        ?

    <frozen importlib._bootstrap>:688: in _load_unlocked

        ?


ModuleNotFoundError occurred.


###  Similar threads


    * [ CI/CD & Automation ](/solutions/ci-cd/)
    * [ DevOps ](/solutions/devops/)
    * [ DevSecOps  ](https://resources.github.com/devops/fundamentals/devsecops/)


|  7  |  4274  |  March 5, 2024

  * [ Home ](/)
  * [ Categories ](/categories)
  * [ FAQ/Guidelines ](/guidelines)
  * [ Terms of Service ](/tos)
  * [ Privacy Policy ](/privacy)


##  Bug report
My robot needs a lot of Adafruit and Sparkfun sensors and I am experimenting
installing new drivers into my ROS2 humble installtion. rosdistro was forked
and imported and python.yaml adjusted accordingly. The changes are recognized
and installed by rosdep. During these installs I noticed that rosdep installs
the libraries (in this case Adafruit-Blinka ` with ` sudo pip ` . The result
does not work, with ` import board ` module ` hid` is not found. I can
reproduce this behavior in my own environment. installing as sudo causes the
error, when I install as normal user everything is ok.
**Required Info:**
  * Operating System:
    * Ubuntu 22.04
  * Installation type:
    * ROS2-humble
  * Version or commit hash:
    * 9c23c70f8a9dc8afe5a6b14f73708fe258300097
    * rosedep version 0.22.2
  * DDS implementation:
    *   * Client library (if applicable):
    * rclpy
    *
####  Steps to reproduce issue

    I added adafruit-blinka to package.xml. There is already a rule for it in python.yaml.

    <?xml version="1.0"?>
    <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
    <package format="3">
      <name>sensor_vl53l1x</name>
      <version>0.0.1</version>
      <description>Distance sensor publisher</description>
      <maintainer email="arnold@todo.todo">arnold</maintainer>
      <license>MIT 2.0</license>

      <exec_depend>rclpy</exec_depend>
      <exec_depend>std_msgs</exec_depend>
      <exec_depend>time</exec_depend>
      <exec_depend>python3-adafruit-blinka-pip</exec_depend>
      <exec_depend>python3-adafruit-circuitpython-bno055-pip</exec_depend>

      <test_depend>ament_copyright</test_depend>


__ Gold Member


[ anishdalvi  ](https://forum.djangoproject.com/u/anishdalvi) September 17,
2022, 6:24am  8


    # Here is the code I am trying.

    assert 1 == 1

    # I even tried this and got the same error

    def test_number():

        assert 1 == 1


#  Provide feedback


        path('app/', include('app.urls'))
      File "/home/person/.local/lib/python3.10/site-packages/django/urls/conf.py", line 38, in include
        urlconf_module = import_module(urlconf_module)
      File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
      File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 883, in exec_module
      File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
      File "/home/person/job/project/app/urls.py", line 3, in <module>
        from . import views
      File "/home/person/job/project/app/views.py", line 7, in <module>
        from api import GetRequest
    ModuleNotFoundError: No module named 'api'


* [ Trending ](https://www.physicsforums.com/whats-new/hot-threads)


> I have already try to import like .api or app.api but didn’t work.


**[ wjwwood ](/wjwwood) ** commented  Apr 5, 2018


Additional navigation options


    * [ Collections ](/collections)
  * [ Pricing ](/pricing)
Search or jump to...
#  Search code, repositories, users, issues, pull requests...
Search
Clear
[ Search syntax tips ](https://docs.github.com/search-github/github-code-
search/understanding-github-code-search-syntax)
#  Provide feedback
We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel  Submit feedback
#  Saved searches
##  Use saved searches to filter your results more quickly
Name
Query
To see all available qualifiers, see our [ documentation
](https://docs.github.com/search-github/github-code-search/understanding-
github-code-search-syntax) .
Cancel  Create saved search
[ Sign in
](/login?return_to=https%3A%2F%2Fgithub.com%2Fros2%2Fros2%2Fissues%2F1478)
[ Sign up
](/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-
name%3E%2F%3Crepo-
name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-
repo&source_repo=ros2%2Fros2)
You signed in with another tab or window. [ Reload ]() to refresh your
session.  You signed out in another tab or window. [ Reload ]() to refresh
your session.  You switched accounts on another tab or window. [ Reload ]() to
refresh your session.  Dismiss alert
{{ message }}
[ ros2 ](/ros2) /  **[ ros2 ](/ros2/ros2) ** Public
  * [ Notifications ](/login?return_to=%2Fros2%2Fros2)
  * [ Fork  589  ](/login?return_to=%2Fros2%2Fros2)
  * [ Star  3.1k  ](/login?return_to=%2Fros2%2Fros2)
  * [ Code  ](/ros2/ros2)
  * [ Issues  129  ](/ros2/ros2/issues)
  * [ Pull requests  2  ](/ros2/ros2/pulls)
  * [ Actions  ](/ros2/ros2/actions)


you have something similar to this? :


Sorry, something went wrong.


    # Here is the code I am trying.

    assert b'this should come back true'

    # I even tried this and got the same error

    def test_number():

        assert b'this should come back true'


Yeah, unfortunately that whole top part is attached to all exceptions. We
should probably change the exception handling up a bit to make it more
palatable.

---

All reactions


[ @aniroodh-ravikumar ](https://github.com/aniroodh-ravikumar) : What happens
when you run ` pip --version ` in the same terminal from which you run `
rosdep ` ? What OS are you on? Can you paste the output of the rosdep command
you run and also the output when you run with the ` -s ` (simmulate) flag?

---

All reactions


__ __ __


Python  [ UnimplementedError: Cast string to float is not supported
](/threads/unimplementederror-cast-string-to-float-is-not-supported.1050969/)


* [ Featured Threads ](https://www.physicsforums.com/threads/featured)


Development


* Product


  * __
  * #4


> Is this issue fixed?


` /opt/local/bin ` is probably macports, which none of us use regularly.

---

All reactions


Copy link


[ plopidou  ](https://forum.djangoproject.com/u/plopidou) August 16, 2022,
8:34am  4


Ok it just seemed like it was weird that it raises an internal error. I would
have expected it to just print bad installer (without the internal error
message cause it's not really an internal error). Not a huge problem,
especially since rosdep will be replaced soon.

---

All reactions


    * [ All features ](/features)
    * [ Documentation  ](https://docs.github.com)
    * [ GitHub Skills  ](https://skills.github.com/)
    * [ Blog  ](https://github.blog)


[ yeole-rohan  ](https://forum.djangoproject.com/u/yeole-rohan) April 18,
2022, 9:57am  6


[ AK-8420  ](https://forum.djangoproject.com/u/AK-8420) February 22, 2022,
4:09pm  5


None yet


That is the output when I run the rosdep command with the -s flag.


[ Sign in ](/login?return_to=https%3A%2F%2Fgithub.com%2Fros-
infrastructure%2Frosdep%2Fissues%2F367)


[ plopidou  ](https://forum.djangoproject.com/u/plopidou) August 16, 2022,
8:43am  6


What do you mean by bootstrapping flask properly?

Here is the code I am using. Do I need to successfully login before running
pytest?
I am running pytest by typing python -m pytest. I have a lot of commented out
code because I want to test the simplest version of pytest.


Sorry, something went wrong.


[ Sign up for free ](/join?source=comment-repo) **to join this conversation on
GitHub** . Already have an account? [ Sign in to comment
](/login?return_to=https%3A%2F%2Fgithub.com%2Fros-
infrastructure%2Frosdep%2Fissues%2F367)


[ ![@NikolausDemmel](https://avatars.githubusercontent.com/u/479562?s=80&v=4)
](/NikolausDemmel)


As mentioned above there should be an easy workaround: Install pip.

---

All reactions


* Apr 20, 2022


__ __ __


[ ![@bryan-
bisonai](https://avatars.githubusercontent.com/u/1245675?s=80&u=1ec5f65a8f6f0be41ddbda657008c8dc418c2c90&v=4)
](/bryan-bisonai)


Try adding your project directory to PYTHONPATH.
(e.g. ` export PYTHONPATH=/home/akakatsu/KFIPtutorial ` , or whatever your
project path is)


Clear


No branches or pull requests


|  4  |  724  |  January 25, 2024

  * [ Home ](/)
  * [ Categories ](/categories)
  * [ FAQ/Guidelines ](/guidelines)
  * [ Terms of Service ](/tos)
  * [ Privacy Policy ](/privacy)


1 Like


**[ mitchellwills ](/mitchellwills) ** commented  Jan 6, 2015


* [ Is there a quick way to put quotation marks around strings in an array? ](/threads/is-there-a-quick-way-to-put-quotation-marks-around-strings-in-an-array.1057943/ "Is there a quick way to put quotation marks around strings in an array?")


* [ Computing and Technology ](https://www.physicsforums.com/forums/computing-and-technology.188/)


#  I am getting an error Import "_frozen_importlib" could not be resolved


2024 © Physics Forums, All Rights Reserved


##  Footer


I am getting the error Import "_frozen_importlib" could not be resolved when using pytest and conda. Can someone please help?


The error means that the module or package named "_frozen_importlib" cannot be
found or imported in the current code or environment.


**[ aniroodh-ravikumar ](/aniroodh-ravikumar) ** commented  Apr 4, 2018  •


It seems like it may be nice to make pip be installed implicitly on systems
that support it when rosdep will attempt to install using pip.

---

The text was updated successfully, but these errors were encountered:


Copy link


[ PeterDonis  ](/members/peterdonis.197831/)


**[ wjwwood ](/wjwwood) ** commented  Jan 6, 2015


rgtr  __


When I do this:


By:


> rgtr said:
>
> Do you think this could be an error with conda?


Views


  *   * __ Thread starter  rgtr
  * __ Start date  Apr 19, 2022
  * __ Tags
     [ Error ](/tags/error/) [ flask ](/tags/flask/)


Search


* [ Earth Sciences ](https://www.physicsforums.com/forums/earth-sciences.84/)


then ` from .api import GetRequest ` ?


[ __ What's new  ](/whats-new/ "What's new") [ __ Search  ](/search/ "Search")


edited


When I click on
..\\..\\..\\..\anaconda3\envs\flaskblog2\lib\importlib\\__init__.py:
from the pastebin above I get the file below.


    dir
    |__ models.py
    |__ views.py
    |__ api.py


Collaborator


[ ![@wjwwood](https://avatars.githubusercontent.com/u/100427?s=80&v=4)
](/wjwwood)


            If the assert condition evaluates to False, then it raises the AssertionError exception with the specified error message.
            """
            # Why use a b string? What is response.data? Does it only work if I have a status code like 200?
            assert response.status_code == 405

            # checking username
            assert b'Flask User management Example' in response.data
            '''
            # checking email
            assert b' You need an an account' in response.data
            # checking hashed_password
            assert b'The password is plaintext' in response.data
            # checking confirmation_email
            assert b'The registeration email is False' in response.data
            '''


> ERROR: Rosdep experienced an internal error.
>  Please go to the rosdep page [1] and file a bug report with the message
> below.
>  [1] : [ http://www.ros.org/wiki/rosdep ](http://www.ros.org/wiki/rosdep)
>  rosdep version: 0.12.2
>  Bad installer [pip]: [Errno 2] No such file or directory


Contributor


Sorry, something went wrong.


[ Deployment  ](/c/users/deployment/24)


  * [ Forums  ](https://www.physicsforums.com/)
  * [ Other Sciences  ](/#other-sciences.6)
  * [ Programming and Computer Science  ](/forums/programming-and-computer-science.165/)


* [ Insights  Why Division by Zero is a Bad Idea ](/threads/why-division-by-zero-is-a-bad-idea.1058986/ "Why Division by Zero is a Bad Idea")


  * __
  * #1


[ ](https://github.com "GitHub") © 2024 GitHub, Inc.


You can’t perform that action at this time.


[ Technology news ](https://phys.org/technology-news/) on Phys.org


Toggle navigation


__ Search titles only  __


By Solution


It happened to be on a system that I think had some base installation of ROS
and that was it. In the src directory there was a package that depended on a
rosdep key that resolved to a pip package.

---

All reactions


[ Using Django  ](/c/users/6)


* Apr 19, 2022


This topic has already been marked as resolved. I would suggest you open a new
topic for this issue. Please repost the traceback there, along with a
description about how your environment is set up to run Daphne, and how you’re
actually running it.


* [ C++ How to invoke an object's method in a different file ](/threads/c-how-to-invoke-an-objects-method-in-a-different-file.1057417/ "C++ How to invoke an object's method in a different file")


[ Django Forum ](/)


Projects


Contributor


    <frozen importlib._bootstrap_external>:879: in exec_module

        ?

    <frozen importlib._bootstrap_external>:1017: in get_code

        ?

    <frozen importlib._bootstrap_external>:947: in source_to_code

        ?

    <frozen importlib._bootstrap>:241: in _call_with_frames_removed

        ?

    E   ValueError: source code string cannot contain null bytes

    ===================================================================================== warnings summary ======================================================================================

    ..\..\..\..\anaconda3\envs\flaskblog2\lib\site-packages\flask_sqlalchemy\__init__.py:851

      C:\Users\nmyle\anaconda3\envs\flaskblog2\lib\site-packages\flask_sqlalchemy\__init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".

        warnings.warn(..\..\..\..\anaconda3\envs\flaskblog2\lib\site-packages\flask_sqlalchemy\__init__.py:872

      C:\Users\nmyle\anaconda3\envs\flaskblog2\lib\site-packages\flask_sqlalchemy\__init__.py:872: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True or False to suppress this warning.

        warnings.warn(FSADeprecationWarning(-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

    ================================================================================== short test summary info ==================================================================================

    ERROR  - ValueError: source code string cannot contain null bytes

    ! Interrupted: 1 error during collection !

    =============================================================================== 2 warnings, 1 error in 0.66s ================================================================================

    (flaskblog2) PS C:\Users\nmyle\OneDrive\Desktop\flask code\flaskblog2>


> As mentioned above there should be an easy workaround: Install pip.


{{ message }}


    ERROR: Rosdep experienced an internal error.
    Please go to the rosdep page [1] and file a bug report with the message below.
    [1] : http://www.ros.org/wiki/rosdep

    rosdep version: 0.11.0

    Bad installer [pip]: [Errno 2] No such file or directory


#  Saved searches


Assignees


None yet


[ Register ](/login/register)


Content of api.py:


     Traceback (most recent call last):
      File "/home/administrator/people/peoples/venv/bin/daphne", line 8, in <module>
        sys.exit(CommandLineInterface.entrypoint())
      File "/home/administrator/people/peoples/venv/lib/python3.8/site-packages/daphne/cli.py", line 170, in entrypoint
      cls().run(sys.argv[1:])
     File "/home/administrator/people/peoples/venv/lib/python3.8/site-packages/daphne/cli.py", line 232, in run
    application = import_by_path(args.application)
     File "/home/administrator/people/peoples/venv/lib/python3.8/site-packages/daphne/utils.py", line 12, in import_by_path
       target = importlib.import_module(module_path)
     File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
       return _bootstrap._gcd_import(name[level:], package, level)
       File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
     File "<frozen importlib._bootstrap>", line 991, in _find_and_load
      File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
       File "<frozen importlib._bootstrap_external>", line 848, in exec_module
      File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
     File "/home/administrator/people/peoples/./peoples/asgi.py", line 6, in <module>
         from chat.consumers import ChatRoomConsumer
     File "/home/administrator/people/peoples/./chat/consumers.py", line 6, in <module>
      from people.models import User
     File "/home/administrator/people/peoples/./people/models.py", line 5, in <module>
    Apr 18 11:48:03 35651.hostserv.eu python[119025]:     from django.contrib.auth.models import AbstractUser
     File "/home/administrator/people/peoples/venv/lib/python3.8/site-packages/django/contrib/auth/models.py", line 2, in <module>
      from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
     File "/home/administrator/people/peoples/venv/lib/python3.8/site-packages/django/contrib/auth/base_user.py", line 47, in <module>
    Apr 18 11:48:03 35651.hostserv.eu python[119025]:     class AbstractBaseUser(models.Model):
    File "/home/administrator/people/peoples/venv/lib/python3.8/site-packages/django/db/models/base.py", line 107, in __new__
       app_config = apps.get_containing_app_config(module)
      File "/home/administrator/people/peoples/venv/lib/python3.8/site-packages/django/apps/registry.py", line 252, in get_containing_app_config
    self.check_apps_ready()
      File "/home/administrator/people/peoples/venv/lib/python3.8/site-packages/django/apps/registry.py", line 134, in check_apps_ready
     settings.INSTALLED_APPS
      File "/home/administrator/people/peoples/venv/lib/python3.8/site-packages/django/conf/__init__.py", line 76, in __getattr__
      self._setup(name)
    File "/home/administrator/people/peoples/venv/lib/python3.8/site-packages/django/conf/__init__.py", line 57, in _setup
       raise ImproperlyConfigured(
    django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. . You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.


There could be multiple reasons for this error, such as a misspelled module or
package name, a missing or corrupted installation, or a compatibility issue
with the current code or environment.


**Have a question about this project?** Sign up for a free GitHub account to
open an issue and contact its maintainers and the community.


Sorry, something went wrong.


  * [ Code  ](/ros-infrastructure/rosdep)
  * [ Issues  ](/ros-infrastructure/rosdep/issues)
  * [ Pull requests  ](/ros-infrastructure/rosdep/pulls)
  * [ Actions  ](/ros-infrastructure/rosdep/actions)
  * [ Projects  ](/ros-infrastructure/rosdep/projects)
  * [ Security  ](/ros-infrastructure/rosdep/security)
  * [ Insights  ](/ros-infrastructure/rosdep/pulse)


Pick a username


  * Aug 23, 2022
Programming and Computer Science


Search  [ Advanced search…  ](/search/)


[ MihaMarkovi  ](https://forum.djangoproject.com/u/MihaMarkovi) August 16,
2022, 7:22am  1


[ ![@aniroodh-
ravikumar](https://avatars.githubusercontent.com/u/30080678?s=80&u=04eb43d29f4d17087678782b5cae8bdf2c7b127a&v=4)
](/aniroodh-ravikumar)


Yes, if the module or package "_frozen_importlib" is dependent on another
module or package that is not installed or cannot be found, it can result in
this error.


Collaborator


The text was updated successfully, but these errors were encountered:

All reactions
[ ![@gavanderhoorn](https://avatars.githubusercontent.com/u/4550046?s=80&v=4)
](/gavanderhoorn)
Copy link
###
**[ gavanderhoorn ](/gavanderhoorn) ** commented  Aug 28, 2023  •
edited
` rosdep ` installs as the super user by default, as that's what most (all?)
of the installers it coordinates require ( ` apt ` without ` sudo ` / as the
super user doesn't really work fi).
However, you can ask it to not do that for certain installers, by passing the
` --as-root pip:no ` command line argument:

    $ rosdep --help
    [..]
      --as-root=INSTALLER_KEY:<bool>
                            Override whether sudo is used for a specific
                            installer, e.g. '--as-root pip:false' or '--as-root
                            "pip:no homebrew:yes"'. Can be specified multiple
                            times.
    [..]
PS: the formatting of your post seems 'broken'. You may have missed a closing
backtick somewhere.

---

All reactions
Sorry, something went wrong.
[ ![@RnoldR](https://avatars.githubusercontent.com/u/9727056?s=80&v=4)
](/RnoldR)
Copy link
Author
###
**[ RnoldR ](/RnoldR) ** commented  Aug 28, 2023
I was looking for that, thank you very much!


Labels


      <test_depend>ament_flake8</test_depend>
      <test_depend>ament_pep257</test_depend>
      <test_depend>python3-pytest</test_depend>

      <export>
        <build_type>ament_python</build_type>
      </export>
    </package>

    The module vl53l1x.py

    import rclpy
    from rclpy.node import Node
    from std_msgs.msg import Int32

    import board
    import adafruit_vl53l1x
    import adafruit_bno055

    class Vl53l1x_publisher(Node):
        def __init__(self):
            super().__init__("Vl53l1x_publisher")

            i2c = board.I2C()  # uses board.SCL and board.SDA

            self.sensor = adafruit_vl53l1x.VL53L1X(i2c)

            # OPTIONAL: can set non-default values
            self.sensor.distance_mode = 1
            self.sensor.timing_budget = 100

            # self.sensor = Vl53l1xSensor()
            self.publisher_ = self.create_publisher(Int32, 'topic', 10)
            timer_period = 0.5  # seconds
            self.timer = self.create_timer(timer_period, self.timer_callback)
            self.i = 0
            self.start()


[ ![@mitchellwills](https://avatars.githubusercontent.com/u/427009?s=80&v=4)
](/mitchellwills)


|  1  |  88  |  March 31, 2024
[ Old Project to new python and Django Version
](https://forum.djangoproject.com/t/old-project-to-new-python-and-django-
version/5138)


__ Top


__ __ __


    * [ Learning Pathways  ](https://resources.github.com/learn/pathways/)
    * [ White papers, Ebooks, Webinars  ](https://resources.github.com/)
    * [ Customer Stories ](/customer-stories)
    * [ Partners  ](https://partner.github.com/)


Explore


  * __
  * #5


Here is my github [ https://github.com/NML240/flaskblog2/tree/master
](https://github.com/NML240/flaskblog2/tree/master) .
I accidentally called the side branch master I just have not had a chance to
change it.
I also added an empty __init__.py file in my unit folder.


Could you run ` which python ` and ` python --version ` .

---

All reactions


[ Getting Started  ](/c/users/getting-started/16)


  * [ Forums  ](https://www.physicsforums.com/)
  * [ Other Sciences  ](/#other-sciences.6)
  * [ Programming and Computer Science  ](/forums/programming-and-computer-science.165/)


I have a problem with importing python file and calling it in views.py. In my
case, I’m storing file (get.py) in the same directory as views.


When I type conda list I get


Email Address


  * Mar 27, 2023
Programming and Computer Science


For


Collaborator


Menu


  * Mar 26, 2011
Programming and Computer Science


**[ wjwwood ](/wjwwood) ** commented  Jan 6, 2015


[ Mystery Errors  ](/c/users/mystery-errors/22)


###  Hot Threads


__ Homework Helper


[ Django Forum ](/)


Thank you for replying. Yes, It is.
Additionally, I tried in the parent directory of my project, and in
KFIPtutorial/KFIPtutorial.
But same error occurred ![:sob:](https://emoji.discourse-
cdn.com/twitter/sob.png?v=12)


Replies


Already on GitHub? [ Sign in ](/login?return_to=%2Fros-
infrastructure%2Frosdep%2Fissues%2Fnew%2Fchoose) to your account


Topic  |  |  Replies  |  Views  |  Activity
---|---|---|---|---
[ ImportError: cannot import name 'Callable' from 'collections'
](https://forum.djangoproject.com/t/importerror-cannot-import-name-callable-
from-collections/11047)


**[ bryan-bisonai ](/bryan-bisonai) ** commented  Dec 28, 2017


  * __
  * #3


[ KenWhitesell  ](https://forum.djangoproject.com/u/KenWhitesell) February 22,
2022, 2:12pm  4


[ AK-8420  ](https://forum.djangoproject.com/u/AK-8420) February 22, 2022,
1:43pm  3


**[ NikolausDemmel ](/NikolausDemmel) ** commented  Apr 4, 2018


#  [ 【solved】django-admin causes ModuleNotFoundError of setting files
](/t/solved-django-admin-causes-modulenotfounderror-of-setting-files/12287)


Search or jump to...


To prevent this error, make sure all necessary modules and packages are
installed and correctly spelled, and regularly update your code and
environment to ensure compatibility with any changes in the module or package.


hi [ @KenWhitesell ](/u/kenwhitesell) I getting same issue and tried the
solution provided.
Im trying to run daphne for websocket but its failing and throwing same error
like above with my project directory name. im attaching daphne error log for
more info below.


**[ mitchellwills ](/mitchellwills) ** commented  Jan 6, 2015


Hello Sir,
I have tried all possible solutions suggested by you and other guys in
STACKOVERFLOW website. I am still facing the same error. Here is the detailed
error link that i have posted on Stackoverflow [ <frozen importlib._bootstrap>
error in python django - Stack Overflow
](https://stackoverflow.com/questions/73749550/frozen-importlib-bootstrap-
error-in-python-django)
It would be great if you help me to solve this error. Thank You


Collaborator


Code:


Contributor


You are using an out of date browser. It may not display this or other
websites correctly.
You should upgrade or use an [ alternative browser
](https://www.google.com/chrome/) .


[ ![@aniroodh-
ravikumar](https://avatars.githubusercontent.com/u/30080678?s=80&u=04eb43d29f4d17087678782b5cae8bdf2c7b127a&v=4)
](/aniroodh-ravikumar)


Resources


__ __ __


Copy link


To see all available qualifiers, see our [ documentation
](https://docs.github.com/search-github/github-code-search/understanding-
github-code-search-syntax) .


  * [ Code  ](/ros-infrastructure/rosdep)
  * [ Issues  107  ](/ros-infrastructure/rosdep/issues)
  * [ Pull requests  34  ](/ros-infrastructure/rosdep/pulls)
  * [ Actions  ](/ros-infrastructure/rosdep/actions)
  * [ Projects  0  ](/ros-infrastructure/rosdep/projects)
  * [ Security  ](/ros-infrastructure/rosdep/security)
  * [ Insights  ](/ros-infrastructure/rosdep/pulse)


###  Recent Insights


[ Log in ](/login/)


* [ Computer Science ](https://www.physicsforums.com/forums/programming-and-computer-science.165/)


directory structure:


[ __ Back  ](javascript:)


#  rosdep fails if pip is not installed  #367


mm have you tried emptying ` api.py ` , put ` FOO = 'bar' ` in it (and only
that).


[ plopidou  ](https://forum.djangoproject.com/u/plopidou) August 16, 2022,
9:07am  8


    import requests
    from models import Company
    from dateutil import parser

    class GetRequest:
        # some code...


Runnning the following command, the contents of setting_local.py was output
successfully.


We read every piece of feedback, and take your input very seriously.


is the earliest time step the agent can arrive at n, that is tl
.
The h-value is independent of the time interval and is defned for graph vertices. It estimates the travel time from the
vertex to the goal (e.g., it equals the straight-line distance
between the vertices divided by the maximum speed of the
agent). As in SIPP, we assume the heuristic to be consistent.
After selecting a node, its successors are generated. For
each outgoing edge, we apply the projecting operation as
described above. As a result, for each edge, we obtain a set
of projected time intervals. If the target confguration allows
for waiting (the velocity is zero), then we extend the upper
bounds of the projected intervals to the upper bounds of the
corresponding safe intervals of the target vertex. As a result,
each of the generated successors implicitly encompasses the
information both about all possible transitions from the pre12334
decessor and all possible wait actions in the current node.
Finally, each generated successor is inserted into OP EN
in case it is not already present in the search tree. The algorithm stops when a node corresponding to the goal vertex
is extracted from OP EN. At this stage, the path can be reconstructed. To do so, we go backward from the goal node
and, at each iteration, do the following. Let n be the current node (initially set to the goal node, ngoal), t – the time
variable (initially equal to ngoal.tl), nparent – parent of n,
and e the transition between them. If the agent can wait at
n, then we add the tuple (e, n.tl − cost(e)) to π and change
n = nparent and t = n.tl −cost(e). If the agent cannot wait
at n, we add (e, t − cost(e)) to π and change n = nparent
and t = t − cost(e). This is repeated until we reach the start
node. If the fnal value t does not match tstart, then the agent
has to wait at the start (for t − tstart time steps).
The pseudo-code of SIPP-IP is presented in Algorithm 1.
Theoretical Properties of SIPP-IP
According to the defnition of the SIPP-IP state, we
can view each SIPP-IP state as a sequence of A*-withTime-Steps (A*-TS) states. That is nSIP P −IP (v, [tl
, tu]) =
{sA∗−T S(v, t) : t ∈ [tl
, tu]}. We will use this relation along
in the next proofs.
Theorem 1. SIPP-IP is complete.
Proof. In the presented function getSuccessors, we try to use
all available edges on the input vertex. Then, for each edge
using the function projectIntervals, we get the intervals that


National Library of Medicine
8600 Rockville Pike
Bethesda, MD 20894


Search PMC Full-Text Archive
Search PMC Full-Text Archive
Search in PMC
Advanced Search  User Guide
Journal List  Sensors (Basel)  PMC10708786
As a library, NLM provides access to scientific literature. Inclusion in an NLM database does not imply endorsement of, or agreement with, the contents by NLM or the National Institutes of Health.
Learn more: PMC Disclaimer | PMC Copyright Notice
Logo of sensors
Sensors (Basel). 2023 Dec; 23(23): 9617.
Published online 2023 Dec 4. doi: 10.3390/s23239617
PMCID: PMC10708786
PMID: 38067990
A Path-Planning Method to Significantly Reduce Local Oscillation of Manipulators Based on Velocity Potential Field
Xianlun Wang, Conceptualization, Methodology, Project administration, Funding acquisition,1,2 Qingsong Wu, Methodology, Software, Writing – review & editing,1 Tianyu Wang, Conceptualization, Methodology, Writing – original draft,1 and Yuxia Cui, Conceptualization, Writing – review & editing, Project administration, Funding acquisition1,*
Author information Article notes Copyright and License information PMC Disclaimer
Associated Data
Data Availability Statement
Go to:
Abstract
The robotics industry and associated technology applications are a vital support for modern production and manufacturing. With the intelligent development of the manufacturing industry, the application of collaboration robots and human-robot collaboration technology is becoming more and more extensive. In a human-robot collaboration scenario, there are uncertainties such as dynamic impediments, especially in the human upper limb, which puts forward a higher assessment of the manipulator’s route planning technology. As one of the primary branches of the artificial potential field (APF), the velocity potential field (VPF) offers the advantages of good real-time performance and convenient mathematical expression. However, the traditional VPF algorithm is prone to local oscillation phenomena near obstacles, which degrades the smoothness of the movement of the manipulators. An improved velocity potential field algorithm is proposed in this paper. This method solves the problem of sudden velocity change when the manipulator enters and departs the region of the potential field by setting new functions for attraction velocity and repulsion velocity functions. A virtual target point construction method is given to overcome the local oscillation problem of the manipulators near obstacles. The simulation and practical findings of the manipulators reveal that the improved VPF algorithm can not only avoid collision but also effectively reduce the local oscillation problem when dealing with the human upper limb as a dynamic obstacle. The implementation of this algorithm can increase the safety and real-time performance of the human-robot collaboration process and ensure that the collaborative robot is safer and smoother in the working process.


Crossref
ISI
Google Scholar
32. Wu PW. Grasping the object with collision avoidance of wheeled mobile manipulator in dynamic environments. In: 2013 26th IEEE/RSJ international conference on intelligent robots and systems, Tokyo, Japan, 3–8 November 2013, pp. 5300–5305. IEEE.


After verifying the feasibility of obstacle avoidance in the simulation environment, experimental verification was conducted. According to the simulation results, the person’s right-hand was moved according to the above positions, and then the simulation speed was sent to the manipulator for path-planning experiments. During the experiment, it was found that when the manipulator moved at the simulation speed, the speeds before and after obstacle avoidance were faster than those in the simulation process. This discrepancy may be due to large changes in acceleration during obstacle avoidance and the effect of the manipulator’s speed, which is controlled at the lower level. Subsequently, this paper conducted experiments using angle control, and the operation of the manipulator was consistent with the simulation results. Finally, the manipulator avoided the obstacle and reached the target position, as shown in Figure 16.


′
) that is
less than f(n). According to Lemma 1, n
′
A∗−T S is located
at the bottom of a SIPP-IP state n
′
SIP P −IP in OPEN, i.e.,
n
′
A∗−T S.t = n
′
SIP P −IP .tl
. As in SIPP-IP, the states are ordered by the values f(nSIP P −IP ) = n.tl + h(n.v) that is
equal to the f-value of the bottom A*-TS state f(nA∗−T S),
the state n
′
SIP P −IP should have been expanded before the
state nSIP P −IP because f(n
′
A∗−T S) < f(nA∗−T S), which
results in a contradiction. Therefore, there is no A*-TS state
with f-value less than f(nA∗−T S), and hence nSIP P −IP is
the optimal state.
Empirical Evaluation
We have used fve different maps from the MovingAI benchmark (Sturtevant 2012) for the experiments: empty (sized
64x64), room (64x64), warehouse (84x170), random
(128x128) and Sydney (256x256). Each map was populated with an increasing number of moving obstacles (MOs),
and for each number, 200 different instances were generated
that differ in trajectories of MOs. These trajectories were
generated by randomly assigning start and goal locations for
each MO and letting it go from start to goal using random
speeds. Moreover, MO may wait at any cell for a random
number of time steps. For each map, we generated instances
with the densities of MOs varying from 1/25 to 1/3, where
the density is the ratio of the number of MOs to the number
of free cells. The start and goal locations of the agent were
fxed to the top-left and bottom-right corners of the map.
Note that some instances in our dataset (especially with high
densities of MO) are not generally solvable.


time dimension to the robot's conguration space, assuming bounded velocities and
known trajectories of the obstacles (Reif and Sharir, 1985; Erdmann and Lozano-Perez,
1987; Fujimura and Samet, 1989a). Reif and Sharir (1985) solved the planar problem
for a polygonal robot among many moving polygonal obstacles, by searching a visibility
graph in the conguration-time space. Erdmann and Lozano-Perez (1987) discretized the
conguration-time space to a sequence of slices of the conguration space at successive
time intervals. This method essentially solves the static planning problem at every slice
and joins adjacent solutions. Fujimura and Samet (1989a) used a cell decomposition to
represent the conguration-time space, and joined empty cells to connect start to goal.
Another approach to dynamic motion planning is to decompose the problem into
smaller sub-problems: path planning and velocity planning. This method rst computes
a feasible path among the static obstacles. The velocity along the path is then selected to
avoid the moving obstacles (Kant and Zucker, 1986; Lee and Lee, 1987; Fraichard, 1993;
Fraichard and Laugier, 1993; Fujimura and Samet, 1993; Fujimura, 1995). Kant and
Zucker (1986) selected both path and velocity prole using a visibility graph approach. Lee
and Lee (1987) developed independently a similar approach for two cooperating robots,
and compared the eects of delay and velocity reduction on motion time. Fraichard
(1993) considered acceleration bounds, and used a search in a state-time space (s; s; _ t) to
compute the velocity prole yielding a minimum-time trajectory. Fraichard and Laugier
(1993) considered adjacent paths that could be reached from the nominal path when the
nominal path becomes blocked by a moving obstacle. Fujimura (1995) considered the case
of a robot moving on a xed time-dependent network, whose nodes could be temporarily
occluded by moving obstacles.
A dierent approach consists of generating the accessibility graph of the environment,
which is an extension of the visibility graph (Fujimura and Samet, 1989b; Fujimura and
Samet, 1990). Fujimura and Samet (1989b) dened it as the locus of points on the
obstacles which are reachable by the robot moving at maximum speed. These points
form the col lision front, and can be linked together to construct a path from start to
goal. The accessibility graph has the property that, if the robot moves faster than the
obstacles, the path computed by searching the graph is time-minimal. This concept was
extended in (Fujimura, 1994) to the case of slowly moving robots and transient obstacles,
i.e. obstacles that could appear and disappear in the environment.
On-line planning in dynamic environments has mostly emphasized reasoning and
decision making, with little concern to robot dynamics. In (Sanborn and Hendler, 1988),
3
reaction rules were developed for a robot moving in a Trac World. The moving robot
reacts to the environment by predicting the space-time intervals in which belligerent and
apathetic objects would intersect its specied path. This approach considers the physical
properties of the environment, but neglects the physical limitations of the moving robot.
Bounds on the robot's velocity were added in (Tsubouchi and Arimoto, 1994), where


(1)
In (1), LineTo(xgoal) samples randomly in the line between xgoal
and the node of the tree that is closest to xgoal. Uniform(X ) samples the environment uniformly. Finally, Ellipsis(x0, xgoal) samples
inside an ellipsis so that the path from x0 to xgoal is inside it. Same
as Informed RRT* we need to sample the environment uniformly
until we find a path to xgoal. Due to the changes in the tree root and
xgoal in our algorithm, we constantly need to rewire random parts of
the tree and explore the environment for later queries in multi-query
tasks. Thus, as opposed to Informed RRT*, when a path to xgoal is
found, we focus part of the sampling inside the Ellipsis instead of
all of it. Therefore, we can efficiently rewire the paths to xgoal and
to the other parts of the tree as well. To sample in the Ellipsis,
[Gammell et al. 2014] sets x0 and xgoal as focal points of the ellipsis where its transverse and conjugate diameters equal to
p cbest and
c
2
best − c
2
min. cbest is the length of the path from x0 to xgoal, and
cmin is kx0 −xgoalk2. One should notice that unlike Informed RRT*
we update the rotation of the ellipsis at every iteration because of
the changing tree root and goal point.
Tree Largeness: By retaining T between iterations, the tree
grows too large (but with a limited number of the nodes) to be handled wholly in real-time path planning. Instead, we use a subset of
the nodes, denoted by XSI. For the sake of simplicity and saving
memory we use grid-based spatial indexing (Fig 2 left), however
one might use KD-Tree spatial indexing to gain even more speed
up. XSI is used to find xclosest and Xnear of xrand in Algorithm 2.
115
Also, XSI is used in Algorithms 4 and 5 to search for Xnear around
xr and xs, respectively. In addition, XSI is used to search for a node
inside the goal region (rg) as well as to block every node inside the
obstacle regions (rb) of the dynamic obstacles that are within the
distance of ro from the agent (see Fig 2).
Figure 2: Adjacent grid squares for gu and for gi (Left). Obstacle
and goal regions are denoted by rb and rg, respectively (Right).
Only effects of dynamic obstacles within the distance of ro from the
agent are considered.
In order to work with XSI instead of the whole T , we divide the
environment with a square grid (Fig 2 left). To find XSI around one


V
A
-VB
CCA,B
V
A,B
A
^
B
^
V
B
λ
f
λ
r
λ
AB
Figure 2: The Relative Velocity vA;B and the Collision Cone CCA;B.
equivalently, by translating the collision cone CCA;B by vB, as shown in Figure 3. The
Velocity Obstacle V O is then dened as:
V O = CCA;B  vB (2)
B
^
VB
VOB
V
A
VB
A
^
Figure 3: The velocity obstacle V OB.
6
A
^
V
B
VA
H
V


Figure 11. Performance of the different AVFs. AVFs: attractive velocity functions.
The robot begins to move toward the target at the same speed. When approaching the goal with AVF1, the robot moves backward and forward again and again, which makes the robot oscillate near the goal. AVF2 and the proposed function make the robot smoothly get closer and closer to the target. Compared with AVF2, the robot reaches the goals faster in the proposed velocity because the robot begins to slow down near the goal.
RVF based on fuzzy spring damping system
In this simulation, the robot moves from starting point A (100, 380) to goal point B (400, 0), while a static obstacle of radius 30 mm is located at O (200,200). dr is 50 mm. A comparison of different RVFs with robot speed of 10 and 50 mm/s is shown in Figure 12(a) and (b), respectively.


imposed a limit of 100, 000, 000 of generated nodes for all
algorithms. For each instance, we tracked whether the algorithm produced a solution and recorded the algorithm’s
runtime and the solution cost.
Fig. 4 presents the Success Rate (SR) plots, where SR is
the ratio of the successfully solved instances to all of the instances. Indeed, all SIPP-IP competitors have lower SR (except the empty map, where A* and SIPP-IP have the same
SR). For SIPP1 and SIPP2, this is explained by their incompleteness. For A* this is explained by numerous violations
of the imposed limit (of 100, 000, 000) on the number of the
generated nodes.
room empty warehouse random Sydney Factor
SIPP1 93% 82% 69% 89% 97% > SIPP2 90% 79% 66% 85% 92%
SIPP1 77% 46% 16% 55% 30% > 5% SIPP2 60% 39% 11% 44% 20%
SIPP1 42% 7% 1% 7% 4% > 50% SIPP2 22% 3% 0% 1% 3%
Table 1: Percentage of SIPP1/SIPP2 solutions that have
higher costs compared to SIPP-IP.
For each map, we also analyzed the cost of the instances
that were successfully solved by SIPP-IP, SIPP1, and SIPP2.
The results are presented in Table 1. Each cell in the table tells in how many instances (in percent) the cost of the
SIPP1/SIPP2 solution exceeded the cost of the optimal solution found by SIPP-IP by a fxed factor. Evidently, in most
instances, the costs of competitors are larger than of SIPPIP’s costs, and for certain maps (e.g. room), the percentage
of the instances where their cost notably exceeds (by more
than 50%) SIPP-IP’s cost is signifcant (up to 42%).
Finally, the algorithms’ runtime analysis is presented in
Fig. 5. Indeed, all versions of SIPP, including the complete
one, SIPP-IP, are signifcantly faster than A* and reduce
computation time by two orders of magnitude. Moreover,
SIPP-IP is faster than SIPP2. Still, it is outperformed by
SIPP1. This is expected, as SIPP1 exploits a straightforward
expansion strategy missing numerous successors SIPP-IP
would generate. Absolute (averaged) values of the runtime
of SIPP-IP (less than 0.1 s on all maps, except the largest
one) suggest that the proposed planner can be utilized in
real robotic systems, where taking into account kinodynamic
constraints may be of vital importance.
Conclusion
In this work, we have presented a provably complete and
optimal variant of the prominent Safe Interval Path Planning algorithm capable to handle kinodynamic constraints.
We have shown that straightforward ways to extend SIPP
fail in the considered setup, and therefore a more involved
algorithm is needed. The latter has been presented and analyzed theoretically and empirically. The directions for future
research include embedding the suggested algorithm within


To begin with, it is necessary to distinguish the oscillation section. In this study, the manipulator receives velocity data with an interval of 0.5 s to avoid any interference with real-time processing speed. To ensure efficient processing, a three-step over-planning method is employed, in which the manipulator calculates three sets of joint angles backward after calculating one set, and if the rejection speed appears repeatedly twice, an oscillation situation is confirmed. Once the manipulator confirms the onset of oscillation, a new virtual target point, G, is established to guide the manipulator out of the oscillation section. The positioning method of the virtual target point G is indicated in Figure 5.


inside Xnear (lines 2-6). One should note that the computation of ci
is related to the length of the path from x0 to xi. Thus, cost(xi)
needs to compute ci whenever cj for any intermediate node in the
path to xi is changed. Therefore, when cost(xi) is called, it will
recompute ci from xi up to x0 if a new node has been added to the
path to xi (same as RRT*) or any changes in x0 or dynamic obstacles inside ro (see Fig 2) have happened (as opposed to RRT*).
Note that whenever cost(xi) is called, if one of the ancestors of
xi is blocked by a dynamic obstacle, i.e. ci = ∞, we block that
node as well. The introduced cost(xi) is used in Algorithms 3-6.
VT and ET denote sets of nodes and edges in the tree, respectively.
Note that, when a node is added to the tree, 1) it expands the tree;
2) if it is inside the goal region (Fig 2), a path to x0 is found (See
Section 4.2); 3) we have to update the adjacent grid squares used
for grid based spatial indexing (See Section 4.1). Also, it should be
noted that we are using a tree structure to build the tree and each
node has access to its children and its parent. In other words, we
use ET only in the explanation.
Algorithm 3 Add Node To Tree
1: Input: T , xnew, xclosest, Xnear
2: xmin = xclosest, cmin = cost(xclosest) + dist(xclosest, xnew)
3: for xnear ∈ Xnear do
4: cnew = cost(xnear) + dist(xnear, xnew)
5: if cnew < cmin and line(xnear,xnew) ∈ Xfree then
6: cmin = cnew, xmin = xnear
7: VT ← VT ∪ {xnew}, ET ← ET ∪ {xmin, xnew}
Algorithm 4 Rewire Random Nodes
1: Input: Qr, T
2: repeat
3: xr=PopFirst(Qr), Xnear=FindNodesNear(xr, XSI)
4: for xnear ∈ Xnear do
5: cold=cost(xnear), cnew=cost(xr)+dist(xr, xnear)
6: if cnew < cold and line(xr, xnear) ∈ Xfree then
7: ET ← (ET \{Parent(xnear), xnear})∪{xr, xnear}
8: Push xnear to the end of Qr
9: until Time is up or Qr is empty.
Algorithm 5 Rewire From the Tree Root
1: Input: Qs, T
2: if Qs is empty then
3: Push x0 to Qs
4: repeat


Figure 5. Tangential velocity field. (a) Static obstacle. (b) Moving obstacle:

 inside of η. (c) Moving obstacle:

 outside of η.
For stationary obstacle, if η > 180°, the direction of
 is tangent to the circle OP in the opposite side of η as shown in Figure 5(a). If η < 180°,
 is in the side of η. If η = 180°,
 can be either side of η. For moving obstacle, the direction of moving obstacle should be considered and

 is the component of the obstacle velocity in the plane P. If the direction of

 falls within the angle η, to avoid possible collision of robot and dynamic obstacles, then the direction of
 can be on the opposite side of η as shown in Figure 5(b). Otherwise the direction of
 is on the side of η as shown in Figure 5(c).
AVF with saturation function
When approaching the goal, the robot may pass the goal in the next periodic interval with a large velocity. Therefore, a saturation function is suggested to AVF to reduce the chattering as the robot gets closer to the goal. Assume that there is a boundary layer of radius da around the goal. Attractive velocity is defined as a constant outside of the boundary layer, and the distance between the robot and the goal decreases in the boundary layer. Hence, the attractive velocity va is defined as

(5)
where K is the strength of the attractive velocity potential function and it is a constant that can be set to maximum possible value.

 is the distance between N and G.
Now, the AVF is defined as

(6)
where

.
For robotic manipulator operating in 3-D space, the reference vector is related to location and orientation of the end-effector in operational space. Therefore, both linear velocity and angular velocity need to be controlled.
According to the manipulator end-effector orientation based on job task, the angular velocity of the robot is defined as


′
in succ do
15 if n
′
in CLOSED or in OPEN then
16 continue
17 f(n
′
) ← n
′
.tl + h(n
′
.v)
18 Add n
′
to OPEN
19 return ϕ
Function getSuccessors(n, G(V, E), SI):
20 SUCC = ϕ
21 for each e = (n.v, v′
) in available motions do
22 intrvls = projectIntervals(n, e, SI)
23 if v
′
.vel = 0 then
24 for each ti in intrvls do
25 ti.tu ← upper bound of SI(v
′
, ti)
26 for ti in intrvls do
27 insert (v
′
, ti) to SUCC
28 return SUCC
Then SIPP-IP follows the general outline of SIPP/A*. At
each iteration, it, frst, selects the best node from OP EN,
i.e., the one with the minimal f-value. The f-value of a
SIPP-IP node n = (v, [tl
, tu]) is defned as f(n) = g(n) +
h(n) = tl + h(v). Similarly to SIPP, the g-value of the node


An external file that holds a picture, illustration, etc.
Object name is sensors-23-09617-g016.jpg
Figure 16
Real-time obstacle-avoidance experiment of manipulator.


𝑉𝑟𝑒𝑝𝑥⎧⎩⎨⎪⎪⎪⎪0,𝑑𝑜𝑏>𝑑𝑓𝛽⋅𝑠𝑖𝑛[(1−𝑑𝑜𝑏−𝑑𝑠𝑑𝑓−𝑑𝑠).𝜋2].𝜈𝑟𝑒𝑝𝑥𝑑2𝑜𝑏,𝑑𝑠<𝑑𝑜𝑏≤𝑑𝑓𝛽⋅(𝜈𝑟𝑒𝑝𝑥/𝑑2𝑜𝑏),𝑑𝑜𝑏≤𝑑𝑠
(3)
The distance between the obstacle and the closest control point of the manipulator is denoted by 𝑑𝑜𝑏, while 𝛽 represents the intensity factor of the repulsive velocity. The repulsive velocity model is depicted in Figure 2b. After being converted through the Jacobi matrix, the attraction and repulsion velocities are used to obtain the velocities in the joint space, as shown below:


and β in (1) are 0.1 and 2, correspondingly. Also, we set ro, rb
and rg of Fig 2 to 10m, 1.5m and 0.5m, respectively. The limited
time for Tree Expansion-and-Rewiring is set to 10 ms and we set
k in Algorithm 1 to 100. In order to have a fair comparison with
117
CL-RRT, we had a disturbance free model and used C-PBP as the
closed loop controller of the CL-RRT algorithm as well. This way
the differences in the sampling schemes become evident. In CLRRT, The number of the nodes is limited to 1000 for real-time use.
Also, We plan 10 steps ahead with CL-RRT and use 5 as the nearest
neighbor parameter.
We ran each algorithm for each scenario 10 times and averaged the
results. The average number of iterations required to find the path
to each goal was 8.26 for our method and 87.54 for CL-RRT. The
average number of the iterations needed to find the path to G1 was
approximately the same for both of the algorithms since both of
them start growing the tree from a scratch. However, as opposed
to CL-RRT, our method needs fewer iterations as the tree grows in
the environment. Particularly, in RT-RRT* when the tree is grown
to the whole area, the path is fast to find, e.g. the average number
of the iterations for finding paths to G4, G5 and G6 are 1.00, 4.27
and 1.00 for RT-RRT*, respectively, whereas for CL-RRT they are
of the order of 100. This happens because nothing is pruned from
the tree unlike in CL-RRT (supplemental video 1:30). In addition,
the average length of a path taken to the different goals was 27.12
for our method and 72.67 for CL-RRT. We can see that RT-RRT*
needs less iterations and produces paths with smaller length. The
smaller length of the path is caused by the rewiring operation which
is present only in RRT* based algorithms. We also observed that using 500 iterations CL-RRT failed to find the path to G5 with 65 %
chance and to G3 with 10 % chance because of the narrow passages, whereas RT-RRT* never fails to find a path as the tree is
expanding.
6 Conclusions
In this paper we introduced the first real-time version of RRT* and
informed RRT*. The real-time capability was achieved by interleaving the path planning with the tree expansion and rewiring.
Furthermore, we move the tree root with the agent to retain the
tree instead of building it anew at every iteration. The tree continues to grow until it covers the environment. We also introduced two
modes of rewiring for having shorter paths in the large tree with a
limited number of the nodes. These are: 1) rewiring starting from
the root, and 2) rewiring random parts of the tree. The first one
creates a growing circle centered at the agent. In this process every node inside the circle is rewired, and this circle most frequently
rewires nodes around the agent and thus the tree root. The second one is done using both focused and uniform sampling, but in


Web Policies
FOIA
HHS Vulnerability Disclosure


Keywords: human-robot collaboration, velocity potential field method, real-time obstacle avoidance, trajectory planning
Go to:
1. Introduction
Industrial robots are becoming more and more prevalent. The interaction between robots and humans has gone through four stages: competition, coexistence, collaboration, and co-working [1]. A new generation of collaborative robots with related application technologies has emerged to adapt to the manufacturing and service industries’ changing trends. These robots facilitate a new stage of collaboration between humans and robots [2,3,4]. Currently, businesses are increasingly showing interest in using flexible production and collaborative robots to improve their manufacturing processes. Collaborative robots, particularly lightweight and flexible ones, boost work efficiency by complementing human labor with machine precision and capacity [5,6]. Human-robot collaboration requires critical research in robot motion planning. Robotics motion planning is a highly active research area in the field of human-robot collaboration [7]. Real-time robot path planning is vital to ensure that robots can efficiently and safely avoid obstacles and reach their target destinations. This can be achieved either by maintaining the continuity of velocity and acceleration or by minimizing the trajectory re-planning. These algorithms often face issues such as intricate calculations and unstable search paths. Currently, most path-planning algorithms operate in static low-dimensional environments. Fewer algorithms are suitable for high-dimensional environments due to their limitations, such as complex calculations or unstable search paths [8,9]. Consequently, it is crucial to conduct research into real-time robot path planning to ensure safe navigation and obstacle avoidance, while maintaining both smooth and continuous velocity and acceleration and minimizing the need for trajectory re-planning to enhance planning efficiency [10,11,12].


2.2. Improved Velocity Potential Field
The attraction velocity potential field function is defined as a vector that extends from the end point of the robot to the target, and points in the direction of attraction velocity. The magnitude of the attraction velocity is determined by the distance between the target and the end of the manipulator. The direction of the attraction velocity remains from the end of the manipulator pointing to the target, with a size that follows the principle of “Slow-Fast-Slow”. The magnitudes of the velocity components in the x, y and z directions are determined as the respective percentages of 𝜆(𝑥,𝑦,𝑧). The result is shown in Equation (1).


In the process of human-machine collaboration, the safety distance between the manipulator and the human body is very important. Setting a reasonable safety distance can protect the safety of the operator very well. In order to ensure the safety of the human-machine collaboration experiment, in this paper, the safety distance between the manipulator and the human body is set to be 0.15 m. Figure 11b shows that the distance between the right-hand joint and the connecting rod remains above 0.15 m throughout the manipulator’s movement, preventing it from entering the range of the repulsive potential field. Therefore, the manipulator can move smoothly from its initial position to the target position without any possibility of collision with obstacles.


Figure 8. kp's membership function.


Figure 9. kd's membership function.
The following fuzzy control rules shown in Table 1 are designed.
Table 1. Fuzzy control rules.
IF	v	VS	SL	M	FA	VF
THEN
VSL	SM	ME	BG	VB
VS: Very Slow; SL: Slow; M: Medium; FA: Fast; VF: Very Fast; BG: Big; VB: Very Big; VSL: Very Small; SM: Small; ME: Medium.
Then RVF can be expressed as follows

(11)
where M denotes a large positive number

.
The repulsive velocity is zero outside of influence of repulsive potential field. Within the influence, the velocity is determined by the spring damping system. If a manipulator and an obstacle are very close, the repulsive velocity would be infinite.
In order to get joint velocities, partial Jacobian matrix J′ is created. Point R is assumed that locates on the joint m as the end-effectors of the manipulator, so only the effects of joints between R and the robot base are considered.36 Then J′ is defined as

(12)
where

.
Thus joint velocities can be expressed by “partial Jacobian matrix” relationship for
 as

(13)
where

 denotes the angular velocity of manipulator.
Then joint velocities
 are expressed as

(14)


As shown in Figure 14, the manipulator approaches the target in a straight line when avoiding obstacles correctly, then moves towards the virtual target point in the lateral and posterior direction after approaching the obstacle, and finally moves towards the target in a straight line after leaving the repulsive potential field, completing the entire path planning. The experiment shows that the virtual target point enables the manipulator to turn in a short time, avoiding the occurrence of frequent oscillations. However, due to the existence of lower-level control of the manipulator, the command speed sent directly is unstable, and the changes in joint angles and velocities collected at an interval of 0.5 s during the motion of the manipulator are shown in Figure 15a. The manipulator executed the obstacle-avoidance action in the time range from the 8th s to the 18th s. As can be seen from Figure 15a, the change of the angle values of the joints of the manipulator in the obstacle-avoidance region is reasonably smooth, and there is no strong jitter, which fits the dynamic obstacle-avoidance criteria of the manipulator.


constraints.
Next, we mention only the works that to some extent
deal with taking the agent’s kinematic and/or kinodynamic
constraints into account. (Ma et al. 2019) introduced SIPPwRT that allowed for the planning with different velocities. Still, acceleration actions and effects were not considered in this work. Similarly, (Yakovlev, Andreychuk, and
Vorobyev 2019) described any-angle variant of SIPP that
supported non-uniform velocities. Interestingly, the authors
evaluate their planner on real robots. To plan safe trajectories for them, they suggested infating the sizes of the moving obstacles, which alternatively can be seen as extending
the blocked time intervals of certain graph vertices/edges.
This ad-hoc technique was shown to perform reasonably
well in practice, but in general, it raises the question of how
to choose the offset. For example, if one enlarges the blocked
intervals in the setting described in the Introduction (recall
Fig. 1) by 1 s, SIPP will not fnd a solution. In (Ali and
Yakovlev 2021), accelerating actions were straightforwardly
integrated into SIPP, which, again, makes the algorithm incomplete (as we show in this work). (Cohen et al. 2019)
suggested a variant of SIPP for the problem setting that assumes arbitrary motion patterns. However, this was not the
main focus of the paper. Consequently, no techniques were
proposed to take special care of the accelerating motions,
and the empirical evaluation considered only the motions
that start and end with zero velocity. Overall, to the best of
our knowledge, no SIPP variant existed prior to this work
that would be provably complete and optimal when the assumption of the original SIPP that “the robot can start/stop
instantaneously” does not hold.
Problem Statement
We assume a discretized timeline T = 0, 1, .... The agent
is associated with a graph G = (V, E), with the start and
goal vertices: start, goal ∈ V . A vertex of the graph corresponds to the state of the agent, alternatively known as the
confguration, in which the agent can reside without colliding with the static obstacles. Each confguration explicitly
encompasses the velocity, vel, of the agent. For example, it
may be comprised of the agent’s coordinates and orientation
as well as of its velocity: v = (x, y, θ, vel). Confgurations
with the same position/orientation but different velocities,
indeed, correspond to different vertices of V . Confgurations
with vel = 0 are of special interest, as the agent may stay
put (wait) only in them.
An edge e = (v, u) ∈ E represents a motion primitive
(Pivtoraiko and Kelly 2011), a small kinodynamically feasible fragment of the agent’s motion that transfers the agent
from v to (distinct) u. We assume that for any v ∈ V , a fnite set of such motions is available and each motion takes
an integer number of timesteps. Practicality-wise, this assumption is mild, as any real-valued duration may be approximated with a certain precision and represented as an
integer. The duration of the motion defnes the weight of the


12330
instantaneous acceleration, then the constructed plan, shown
in red, will actually lead to the collision (if it is applied with
real kinodynamic constraints) as shown by the dashed red
line. A straightforward modifcation of SIPP that takes accelerating/decelerating actions into account is to apply only
dynamically valid transitions, i.e., to prevent the wait in the
states where the velocity is not zero. However, this variant
will report failure to fnd the solution while producing a partial plan shown in blue. In this plan, the agent successfully
stops before the frst obstacle and waits for 2 s, but then is
unable to pass the second obstacle as it is running late to
arrive at B7. There is, however, a collision-free plan. It is
shown in green. The reason why SIPP fails to fnd it is that,
intuitively, SIPP postpones the wait actions and cannot reason about the consequences of waiting in different states of
the search tree. This does not violate the theoretical guarantees when waiting is available in any state. On the other
hand, when waiting is not always readily available, i.e., the
agent needs time to stop, the algorithm becomes evidently
incomplete. We will elaborate on this and provide technical
details in the following sections of the paper.
To the best of our knowledge, no works on SIPP exist
that directly address this issue. As a result, all known SIPPbased algorithms are incomplete in the setting where kinodynamic constraints of the agent have to be taken into account when planning. Our work flls this gap and presents
an algorithm that is provably complete and optimal under
such constraints: Safe Interval Path Planning with Interval
Projection (SIPP-IP). To empirically evaluate it, we have
conducted a wide range of experiments in which we compare SIPP-IP to several baselines that include other (noncomplete) variants of SIPP one may think of and A*. Empirical results clearly show that SIPP-IP outperforms them all,
as it is able to solve instances that are unsolvable by other
planners and its runtime is two orders of magnitude lower
than the one of A*.
Related Work
Search-based planning with predictably moving obstacles
can be straightforwardly implemented as A* (Hart, Nilsson,
and Raphael 1968) with discretized time. Taking the time dimension into account, however, leads to signifcant growth
of the search space, especially when fne-grained time discretization is needed. To this end, (Phillips and Likhachev
2011) introduced SIPP, based on the idea of compressing
sequences of timesteps into the time intervals and searching over these intervals. SIPP is provably complete and optimal under several assumptions, including that the agent
can start/stop moving instantaneously. Later, numerous variants of SIPP emerged, enhancing the original algorithm, e.g.,
any-angle SIPP (Yakovlev and Andreychuk 2021), anytime
SIPP (Narayanan, Phillips, and Likhachev 2012), different
variants of bounded-suboptimal SIPP (Yakovlev, Andreychuk, and Stern 2020). Moreover, SIPP and its modifcations
are widely used as building blocks of some of the state-ofthe-art multi-agent pathfnding solvers (Cohen et al. 2019;
Li et al. 2022). None of these variants consider kinodynamic


velocity space, that we call the Velocity Obstacle. It represents the colliding velocities
of the robot with a given obstascle, that moves at a given velocity. General trajectories
are approximated by a sequence of piecewise constant segments. Robot dynamics are
considered by restricting the set of potential avoidance velocities to those reachable by
the set of admissible accelerations over a given time interval.
This approach was demonstrated numerically in several examples showing the applicability of the proposed approach to the avoidance of static and moving obstacles, and
to obstacles moving along straight and curved trajectories. Also demonstrated was the
potential use of this method to eectively negotiate highway trac.
20
7. Acknowledgment
The authors are grateful to the anonymous reviewers for their suggestions and extensive reviews. The research described in this paper has been partially carried out at the
Jet Propulsion Laboratory, California Institute of Technology, under a contract with the
National Aeronautics and Space Administration.
21
References
Canny, J. and Reif, J. (1987). New lower bound techniques for robot motion planning
problems. In 28th IEEE Symposium on Foundation of Computer Science.
Erdmann, M. and Lozano-Perez, T. (1987). On multiple moving objects. Algorithmica,
2(4):477{521.
Featherstone, R. (1990). Swept bubbles: A method of representing swept volume and
space occupancy. Technical Report TR-90-024 and MS-90-069, Philips Laboratories,
North American Philips Corporation, Briarcli Manor, New York 10510.
Fiorini, P. (1995). Robot Motion Planning among Moving Obstacles. PhD thesis, University of California, Los Angeles.
Fiorini, P. and Shiller, Z. (1993). Motion planning in dynamic environments using the
relative velocity paradigm. In IEEE International Conference of Automation and
Robotics, volume 1, pages 560{566.
Fiorini, P. and Shiller, Z. (1995). Robot motion planning in dynamic environments. In
Girald, G. and Hirzinger, G., editors, International Symposium of Robotic Research,
pages 237{248, Munich, Germany. Springer-Verlag.
Fiorini, P. and Shiller, Z. (1996). Time optimal trajectory planning in dynamic environments. In IEEE International Conference of Automation and Robotics, volume 2,
pages 1553{1558, Minneapolis, MN.
Fiorini, P. and Shiller, Z. (1997). Time optimal trajectory planning in dynamic environments. Journal of Applied Mathematics and Computer Science, 7(2):101{126.
Fraichard, T. (1993). Dynamic trajectory planning with dynamic constraints: a statetime space approach. In IEEE/RSJ International Conference on Intel ligent Robots
and Systems, pages 1393{1400, Yokohama, Japan.
Fraichard, T. and Laugier, C. (1993). Path-velocity decomposition revisited and applied
to dynamic trajectory planning. In IEEE International Conference of Automation
and Robotics, volume 1, pages 40{45, Atlanta, GA.
Fujimura, K. (1994). Motion planning amid transient obstacles. International Journal of
Robotics Research, 13(5):395{407.
Fujimura, K. (1995). Time-minimum routes in time-dependent networks. IEEE Transaction on Robotics and Automation, 11(3):343{351.


An external file that holds a picture, illustration, etc.
Object name is sensors-23-09617-g012.jpg
Figure 12
The path-planning result of the manipulator. (a) The result of MATLAB simulation; (b) The result of manipulator operation.


Figure 6. Virtual spring damping system.
Based on the spring damping system, the repulsive velocity vr, within the distance of influence dr, is defined as
(10)
where d0 is the closest distance between the robot and the obstacle

, and
 is the first derivative of
.
The coefficient
 is positively correlated to the velocity v. Generally, the velocity of manipulators varies in different stages or tasks. In order to make the algorithm have a better self-adaptability to different velocities of manipulators, an optimization of kp and kd by fuzzy logic approach is implemented.
The velocity v of a manipulator moving toward an obstacle is chosen as input and
 is defined as output. v is divided into five fuzzy sets: Very Slow (VS), Slow (SL), Medium (M), Fast (FA), and Very Fast (VF). v’s membership function diagram is shown in Figure 7.


An external file that holds a picture, illustration, etc.
Object name is sensors-23-09617-g013a.jpg
An external file that holds a picture, illustration, etc.
Object name is sensors-23-09617-g013b.jpg
Figure 13
Comparison between simulation and experimental velocity of the manipulator. (a) Simulation velocity of manipulator joint 1–3; (b) Simulation velocity of manipulator joint 4–6; (c) Experimental velocity of manipulator joint 1–3; (d) Experimental velocity of manipulator joint 4–6.


Go to:
Data Availability Statement
Data sharing isn’t applicable to this article as no datasets were generated during the current study.


LUDERS, B. D., KARAMAN, S., FRAZZOLI, E., AND HOW,
J. P. 2010. Bounds on tracking error using closed-loop rapidlyexploring random trees. In American Control Conference, IEEE.
OTTE, M., AND FRAZZOLI, E. 2015. RRTX: Real-time motion
planning/replanning for environments with unpredictable obstacles. In Algorithmic Foundations of Robotics XI. Springer.
RASTGOO, M. N., NAKISA, B., NASRUDIN, M. F., NAZRI, A.,
AND ZAKREE, M. 2014. A critical evaluation of literature on
robot path planning in dynamic environment. Journal of Theoretical & Applied Information Technology.
SONG, S., LIU, W., WEI, R., XING, W., AND REN, C. 2014. Path
planning directed motion control of virtual humans in complex
environments. Journal of Visual Languages & Computing.
STURTEVANT, N. R., BULITKO, V., AND BJORNSSON ¨ , Y. 2010.
On learning in agent-centered search. In AAMAS.
SUD, A., ANDERSEN, E., CURTIS, S., LIN, M., AND MANOCHA,
D. 2008. Real-time path planning for virtual agents in dynamic
environments. In ACM SIGGRAPH 2008 Classes, ACM.
118


An external file that holds a picture, illustration, etc.
Object name is sensors-23-09617-g009a.jpg
An external file that holds a picture, illustration, etc.
Object name is sensors-23-09617-g009b.jpg
Figure 9
The results with the virtual target point improved. (a) The path of manipulator obstacle avoidance; (b) Joint angle of the manipulator; (c) Joint velocity of the manipulator; (d) Joint angular velocity of the manipulator.


Google Scholar
24. Li GH, Yamashita A, Asama H, et al. An efficient improved artificial potential field based regression search method for robot path planning. In: 2012 IEEE international conference on mechatronics and automation, Chengdu, China, 5–8 August 2012, pp. 1227–1232. IEEE.
GO TO REFERENCE
Google Scholar
25. Ma Y, Zheng G, Wilfrid P. Real-time local path planning for mobile robots. In: 2013 9th international workshop on robot motion and control, Wasowo, Poland, 3–5 July 2013, pp. 215–220. IEEE.
Google Scholar
26. Zou XY, Jing Z. Virtual local target method for avoiding local minimum in potential field based robot navigation. J Zhejiang Univ Sci B 2003; 4(3): 264–269.
GO TO REFERENCE
Crossref
Google Scholar
27. Masoud SA, Masoud AA. Constrained motion control using vector potential fields. IEEE Trans Syst Man Cybern Syst A Sys Hum 2000; 30: 251–272.
GO TO REFERENCE
Crossref
Google Scholar
28. Kitts CA, Stanhouse K, Cindaphorm P. Cluster space collision avoidance for mobile two-robot systems. In: 2009 IEEE/RSJ international conference on intelligent robots and systems, St. Louis, MO, USA, 11–15 October 2009, pp. 1941–1948. IEEE.


reducing the size of some of the V OBj
.


Information for
International Journal of Advanced Robotic Systems
Impact Factor: 2.3 / 5-Year Impact Factor: 2.3


By introducing trigonometric functions, the manipulator can accelerate the attraction speed from zero to the maximum speed allowed while moving away from the target point. Once the maximum speed is achieved, the manipulator moves at a uniform speed for a specified distance.


r
-VB
P
T
f
Figure 10: Trajectory tangent to B.
11


Our method, which is introduced in Algorithm 1, interleaves path
planning with tree expansion and rewiring. We initialize the tree
with xa as its root (line 2). At each iteration, we expand and rewire
the tree for a limited user-defined time (lines 5-6). Then we plan a
path from the current tree root for a limited user-defined amount of
steps further (k in line 7). The planned path is a set of nodes starting
from the tree root, (x0, x1, ..., xk). At each iteration we move the
agent for a limited time to keep it close to the tree root, x0 (line
10). When path planning is done and the agent is at the tree root,
we change the tree root to the next immediate node after x0 in the
planned path, x1 (lines 8-9). Hence, we enable the agent to move
on the planned path on the tree towards the goal.
Algorithm 1 RT-RRT*: Our Real-Time Path Planning
1: Input: xa, Xobs, xgoal
2: Initialize T with xa, Qr, Qs
3: loop
4: Update xgoal, xa, Xfree and Xobs
5: while time is left for Expansion and Rewiring do
6: Expand and Rewire T using Algorithm 2
7: Plan (x0, x1, ..., xk) to the goal using Algorithm 6
8: if xa is close to x0 then
9: x0 ← x1
10: Move the agent toward x0 for a limited time
11: end loop
Algorithm 2 Tree Expansion-and-Rewiring
1: Input: T , Qr, Qs, kmax, rs
2: Sample xrand using (1)
3: xclosest = arg minx∈XSI dist(x, xrand)
4: if line(xclosest, xrand) ⊂ Xfree then
5: Xnear = FindNodesNear(xrand, XSI)
6: if |Xnear| < kmax or |xclosest − xrand| > rs then
7: AddNodeToTree(T , xrand, xclosest, Xnear)
8: Push xrand to the first of Qr
9: else
10: Push xclosest to the first of Qr
11: RewireRandomNode(Qr, T )
12: RewireFromRoot(Qs, T )
Qr, Qs are two different queues initialized in line 2 to be used for
Rewiring in Algorithm 2. Line 4 of Algorithm 1 updates the goal
point, position of the agent and the obstacles in the environment


SIPP-IP SIPP1 SIPP2 A*
Figure 4: Success Rates of the evaluated algorithms.
room empty warehouse random Sydney 0
1
2
%
45
13 55 125
535
25
10 40 73
420
72
19 108
208
1381 Runtime relative to A*
SIPP-IP SIPP1 SIPP2
Figure 5: Runtimes of SIPP-IP, SIPP1 and SIPP2 compared
to A*. Absolute values (in ms) are shown above the bars.
rotate 90◦
clockwise or counterclockwise in 2 s or wait for
one time step. The time step is chosen to be 0.1 s.
Collision checking is conservative. We prohibit the agent
and any MO from touching the same cell at the same time.
Therefore, the blocked intervals of any cell were reserved for
the MO when it touched this cell even partially. The agent is
allowed to use a motion primitive only if it does not result in
touching a cell in a blocked interval. Moreover, if the time
limits of touching some cell for an agent are not integers,
they are extended to the closest integers in a safer manner.
We compared SIPP-IP to A* with time steps and two
straightforward extensions of SIPP: SIPP1 and SIPP2.
SIPP1 is a modifcation that generates only kinodynamically
feasible successors for the confgurations where the velocity is not zero. SIPP2 further allows to re-expand the search
nodes (which corresponds to allowing to reach confgurations with non-zero velocities at different time steps in the
same safe interval). When implementing SIPP1/SIPP2, we
used the techniques from SIPPwRT (Ma et al. 2019); thus,
the latter can be considered to be included in the comparison. The C++ source code of all planners is publicly available https://github.com/PathPlanning/SIPP-IP.
The experiments were conducted on a PC with Intel Core
i7-10700F CPU @ 2.90GHz × 16 and 32Gb of RAM. We


3.1.3. Simulation after Setting Local Oscillation Processing Strategy
Under the given conditions of the experiment, an additional radius “𝑟𝑠=0.05 m“ beyond the buffer zone was set. With this setting, while keeping the obstacle positions unchanged, Figure 9 illustrates the results of the simulation, using Figure 7a as a reference. In Figure 9, for a more direct display, the step lengths are converted into time on the horizontal axis. After adopting the virtual target point strategy under local oscillation, the starting point of the oscillation-free path is searched, and then smoothed velocity planning is performed using a quintic polynomial trajectory-planning method to reach the target point smoothly after avoiding obstacles.


suggested, depending on how the collision detection mechanism is specifed2
.
To demonstrate how projecting helps in solving instances
that were unsolvable for standard SIPP, recall the example
depicted in Fig. 2. When expanding the start node SIPPIP projects, the time interval of A, which is [0, 5] (coincides with the safe interval for the start node), to the successor. This results in [2, 7] interval. When expanding the
node ((B, vel = 1), [2, 7]), we can now apply both uniform
motion action and decelerating action by trying to commit
them at any time step that belongs to the time interval of
(B, vel = 1) (via the projection operation, again). In such a
way, the uniform motion action from B to C will be committed at t = 4, following the SIPP’s principle of reaching the
successor as early as possible, i.e. at t = 5. The projection of
the interval of B will give us [5, 8]. Finally, when expanding
((C, vel = 1), [5, 8]) the node ((D, vel = 0), [7, ∞)) will
be generated. When this node will be chosen for expansion,
the search will report fnding the solution.
SIPP-IP description SIPP-IP starts with forming the start
node from the graph vertex. Initially, the start interval contains only the frst time step, tstart, provided as input. If the
start vertex allows for waiting, i.e., the velocity of the initial
confguration is zero, the upper bound of the node’s interval
is extended to the upper bound of the safe interval (of the
start vertex), in which tstart resides.
2
See more in the pre-print available on arXiv.
Algorithm 1: SIPP-IP
Function
findPath(vstart, tstart, vgoal, G(V, E), SI):
1 OPEN ← ϕ, CLOSED ← ϕ
2 ti = [tstart, tstart]
3 if vstart.vel = 0 then
4 ti.tu ← upper bound of SI(vstart, ti)
5 nstart ← (vstart, ti)
6 f(nstart) ← tstart + h(vstart)
7 Add nstart to OPEN
8 while OPEN ̸= ϕ do
9 n ← state from OPEN with minimal f-value
10 remove n from OPEN, insert n to CLOSED
11 if n.v = vgoal then
12 return π ← ReconstructPath(n, nstart)
13 succ ← getSuccessors(n, G(V, E), SI)
14 for each n


Go to:
Informed Consent Statement
Not applicable.


center of Bb
and Q.
The magnitude of the velocity vA tangent to Bb
in P is found using the velocity
obstacle V O, whose boundary f represents all front tangent velocities. Then, the intersection R of the trajectory line t with f gives the magnitude of vA. The magnitude of
the corresponding relative velocity follows from the denition vA;B = vA
24
λ
2
T2 B
^
T1
K
P
M
CCA,B
G
A
^
δ
2
λ
1
VB
δ
1
VOB
S Q R
V
Y
X
I
P’ N
Figure 23: Contact points of tangent trajectories.
Note that the magnitude of the velocity vA tangent to Bb
in P 0
2 @Br is simply given
by the intersection S of t and r .
Proof of Lemma 2:
The subsets Sf and Sr of the reachable avoidance velocities RAV include in their boundary


proven by contradiction. Then a geometric construction is used to dene the map between
the tangent velocities and the corresponding points on @Bf .
To prove the necessary condition, let us assume that there exists a velocity vA tangent
to obstacle Bb
such that its corresponding relative velocity, vA;B is not on the boundary
of the collision cone CCA;B, or:
9 vA tangent to Bb
j vA;B = (vA  vB) 62 f
Then vA;B would be either inside or outside CCA;B. In the rst case, by denition
of CCA;B, it would correspond to a collision maneuver, whereas in the second case, it
would correspond to an avoidance maneuver, thus contradicting the hypothesis that vA
is tangent to Bb
.
The sucient condition can be proved similarly, assuming that there exists a relative
velocity vA;B on the boundary of the collision cone CCA;B, that does not generate a
maneuver tangent to Bb
, or:
9 vA;B 2 f such that vA = (vA;B  vB) not tangent to Bb
Then, vA would be either colliding or avoiding, and thus it will be either inside or outside
the velocity obstacle V O. This would contradict the denition of V O, which is computed
by translating the collision cone CCA;B by the velocity of B, vB. In particular, all
velocities on f become velocities with the tip on f .
We prove the second part of the Lemma by construction, computing the tangency
points that correspond to each tangent velocity vA;B 2 f . The tangent relative velocities
are represented by the semi-innite line fA; b
f g, with minimum and maximum relative
velocities given by jvA;Bj ! 0, and jvA;Bj ! 1, respectively. The former velocity corresponds to the limit point Yf , when A and B move on parallel trajectories. The latter
velocity corresponds to the limit point Tf .
The correspondence between any other velocity 0 < vA;B < 1, and a tangency point
P 2 (Tf ; Yf ) is established by using the orthogonality between a tangent trajectory t,
due to vA = (vA;B  vB), and the line l through the center of Bb
and the tangency point.
The right angle between t and l can be embedded into the circle C of diameter (Ab
,Bb
), as
shown in Figure 23. Thus, given a desired tangency point P 2 @Bf , circle C maps it into
the direction of the corresponding tangency trajectory t, represented by the line through
Ab
and Q, as shown in Figure 23. Similarly, given a desired tangency direction t, circle C
maps it into point P, represented by the intersection of @Bf with the line through the


Go to:
Footnotes
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.


Go to:
References
1. Robla-Gomez S., Becerra V., Llata J., Gonzalez-Sarabia E., Torre-Ferrero C., Perez-Oria J. Working Together: A Review on Safe Human-Robot Collaboration in Industrial Environments. IEEE Access. 2017;5:26754–26773. doi: 10.1109/ACCESS.2017.2773127. [CrossRef] [Google Scholar]
2. Hopko S., Khurana R., Mehta R., Pagilla P. Effect of Cognitive Fatigue, Operator Sex, and Robot Assistance on Task Performance Metrics, Workload, and Situation Awareness in Human-Robot Collaboration. IEEE Robot. Autom. Lett. 2021;6:3049–3056. doi: 10.1109/LRA.2021.3062787. [CrossRef] [Google Scholar]
3. Liu H., Wang L. Collision-Free Human-Robot Collaboration Based on Context Awareness. Robot. Comput.-Integr. Manuf. 2021;67:101997. doi: 10.1016/j.rcim.2020.101997. [CrossRef] [Google Scholar]
4. Smids J., Nyholm S., Berkers H. Robots in the Workplace: A Threat to—Or Opportunity for—Meaningful Work? Philos. Technol. 2020;33:503–522. doi: 10.1007/s13347-019-00377-4. [CrossRef] [Google Scholar]
5. Arents J., Abolins V., Judvaitis J., Vismanis O., Oraby A., Ozols K. Human–Robot Collaboration Trends and Safety Aspects: A Systematic Review. J. Sens. Actuator Netw. 2021;10:48. doi: 10.3390/jsan10030048. [CrossRef] [Google Scholar]
6. Evjemo L.D., Gjerstad T., Grøtli E.I., Sziebig G. Trends in Smart Manufacturing: Role of Humans and Industrial Robots in Smart Factories. Curr. Robot. Rep. 2020;1:35–41. doi: 10.1007/s43154-020-00006-5. [CrossRef] [Google Scholar]
7. Matheson E., Minto R., Zampieri E.G.G., Faccio M., Rosati G. Human–Robot Collaboration in Manufacturing Applications: A Review. Robotics. 2019;8:100. doi: 10.3390/robotics8040100. [CrossRef] [Google Scholar]
8. Li F., Huang Z., Xu L. Path Planning of 6-DOF Venipuncture Robot Arm Based on Improved A-Star and Collision Detection Algorithms; Proceedings of the 2019 IEEE International Conference on Robotics and Biomimetics (ROBIO); Dali, China. 6–8 December 2019; pp. 2971–2976. [Google Scholar]
9. Lin C. Hierarchical path planning for manipulators based on genetic algorithm with non-random initial population. Int. J. Innov. Comput. Inf. Control. 2012;8:1773–1786. [Google Scholar]
10. Sozzi A., Bonfe M., Farsoni S., De Rossi G., Muradore R. Dynamic Motion Planning for Autonomous Assistive Surgical Robots. Electronics. 2019;8:957. doi: 10.3390/electronics8090957. [CrossRef] [Google Scholar]
11. Palmieri G., Scoccia C. Motion Planning and Control of Redundant Manipulators for Dynamical Obstacle Avoidance. Machines. 2021;9:121. doi: 10.3390/machines9060121. [CrossRef] [Google Scholar]
12. Burgner-Kahrs J., Rucker D., Choset H. Continuum Robots for Medical Applications: A Survey. IEEE Trans. Robot. 2015;31:1261–1280. doi: 10.1109/TRO.2015.2489500. [CrossRef] [Google Scholar]
13. Hart P.E., Nilsson N.J., Raphael B. A Formal Basis for the Heuristic Determination. IEEE Trans. Syst. Sci. Cybern. 1968;4:100–107. doi: 10.1109/TSSC.1968.300136. [CrossRef] [Google Scholar]
14. Bayili S., Polat F. Limited-Damage A*: A Path Search Algorithm That Considers Damage as a Feasibility Criterion. Knowl.-Based Syst. 2011;24:501–512. doi: 10.1016/j.knosys.2010.12.009. [CrossRef] [Google Scholar]
15. Zhong J., Su J. Robot path planning in narrow passages based on probabilistic roadmaps. Int. J. Robot. Autom. 2013;28:207–217. doi: 10.2316/Journal.206.2013.3.206-3598. [CrossRef] [Google Scholar]
16. Liu C., Chang J., Liu C. Path Planning for Mobile Robot Based on an Improved Probabilistic Roadmap Method. Chin. J. Electron. 2009;18:395–399. [Google Scholar]
17. Wu Z., Meng Z., Zhao W., Wu Z. Fast-RRT: A RRT-Based Optimal Path Finding Method. Appl. Sci. 2021;11:11777. doi: 10.3390/app112411777. [CrossRef] [Google Scholar]
18. Jeong I., Lee S., Kim J. Quick-RRT*: Triangular Inequality-Based Implementation of RRT* with Improved Initial Solution and Convergence Rate. Expert Syst. Appl. 2019;123:82–90. doi: 10.1016/j.eswa.2019.01.032. [CrossRef] [Google Scholar]
19. Xia X., Li T., Sang S., Cheng Y., Ma H., Zhang Q., Yang K. Path Planning for Obstacle Avoidance of Robot Arm Based on Improved Potential Field Method. Sensors. 2023;23:3754. doi: 10.3390/s23073754. [PMC free article] [PubMed] [CrossRef] [Google Scholar]
20. Park S., Lee M., Kim J. Trajectory Planning with Collision Avoidance for Redundant Robots Using Jacobian and Artificial Potential Field-Based Real-Time Inverse Kinematics. Int. J. Control Autom. Syst. 2020;18:2095–2107. doi: 10.1007/s12555-019-0076-7. [CrossRef] [Google Scholar]
21. Li Y., Yang W., Zhang X., Kang X., Li M. Research on Automatic Driving Trajectory Planning and Tracking Control Based on Improvement of the Artificial Potential Field Method. Sustainability. 2022;14:12131. doi: 10.3390/su141912131. [CrossRef] [Google Scholar]
22. Ye M., Li W., Chan D., Chiu P., Li Z. A Semi-Autonomous Stereotactic Brain Biopsy Robot with Enhanced Safety. IEEE Robot. Autom. Lett. 2020;5:1405–1412. doi: 10.1109/LRA.2020.2967732. [CrossRef] [Google Scholar]
23. Yang W., Wu P., Zhou X., Lv H., Liu X., Zhang G., Hou Z., Wang W. Improved Artificial Potential Field and Dynamic Window Method for Amphibious Robot Fish Path Planning. Appl. Sci. 2021;11:2114. doi: 10.3390/app11052114. [CrossRef] [Google Scholar]
24. Heunis C., Barata B., Furtado G., Misra S. Collaborative Surgical Robots: Optical Tracking During Endovascular Operations. IEEE Robot. Autom. Mag. 2020;27:29–44. doi: 10.1109/MRA.2020.2976300. [CrossRef] [Google Scholar]
25. Min H., Lin Y., Wang S., Wu F., Shen X. Path Planning of Mobile Robot by Mixing Experience with Modified Artificial Potential Field Method. Adv. Mech. Eng. 2015;7:1687814015619276. doi: 10.1177/1687814015619276. [CrossRef] [Google Scholar]
26. Xu X., Hu Y., Zhai J., Li L., Guo P. A Novel Non-Collision Trajectory Planning Algorithm Based on Velocity Potential Field for Robotic Manipulator. Int. J. Adv. Robot. Syst. 2018;15:1729881418787075. doi: 10.1177/1729881418787075. [CrossRef] [Google Scholar]
27. Zhang H., Zhu Y., Liu X., Xu X. Analysis of Obstacle Avoidance Strategy for Dual-Arm Robot Based on Speed Field with Improved Artificial Potential Field Algorithm. Electronics. 2021;10:1850. doi: 10.3390/electronics10151850. [CrossRef] [Google Scholar]
28. Zhao D., Zhang B., Zhao Y., Sun Q., Li C., Wang C. Research on Motion Planning for an Indoor Spray Arm Based on an Improved Potential Field Method. PLoS ONE. 2020;15:e0226912. doi: 10.1371/journal.pone.0226912. [PMC free article] [PubMed] [CrossRef] [Google Scholar]
29. Ouyang F., Zhang T. Virtual Velocity Vector-Based Offline Collision-Free Path Planning of Industrial Robotic Manipulator. Int. J. Adv. Robot. Syst. 2015;12:129. doi: 10.5772/60127. [CrossRef] [Google Scholar]
30. Long Z. Virtual Target Point-Based Obstacle-Avoidance Method for Manipulator Systems in a Cluttered Environment. Eng. Optim. 2020;52:1957–1973. doi: 10.1080/0305215X.2019.1681986. [CrossRef] [Google Scholar]
Articles from Sensors (Basel, Switzerland) are provided here courtesy of Multidisciplinary Digital Publishing Institute (MDPI)
OTHER FORMATS
PDF (5.3M)
ACTIONS
Cite
Collections
SHARE


Table 1 compares the experimental results of the traditional VPF with the improved VPF proposed in this paper. From Table 1, it can be seen that the improved VPF proposed in this paper eliminates the local oscillation problem related to the traditional VPF algorithm and accomplishes the obstacle-avoidance task with a guaranteed safe distance. The safety performance in the process of human-machine collaboration is improved. Following experimental verification, the comparison of Figure 15a,b and Figure 17 shows that the joint angle of the running manipulator is consistent with the angle that was sent through simulation, and follows the correct path when running. However, due to the speed planning of the manipulator, the collected speed in the experiment differs from the simulation, mainly in axis 1 and axis 6. Nonetheless, the speed curve direction remains almost the same. The proposed obstacle-avoidance algorithm can control the speed and angle independently and measure the distance in real-time between the manipulator and the obstacle. When the manipulator enters the range of the repulsive potential field, it effectively reacts to obstacles, bypasses them, and smoothly reaches the target position.


𝑉𝑎𝑡𝑡=⎧⎩⎨⎪⎪𝑠𝑖𝑔𝑛(𝜈attx)⋅𝛼⋅𝜆𝑥⋅𝑑max⋅𝑠𝑖𝑛(𝜋(𝑑0−𝑑)2(𝑑0−𝑑max)),𝑑∈[𝑑0,𝑑max]𝑠𝑖𝑔𝑛(𝜈𝑎𝑡𝑡𝑥)⋅𝛼⋅𝜆𝑥⋅𝑑∗𝑚𝑎𝑥,𝑑∈[𝑑∗𝑚𝑎𝑥,𝑑1]𝑠𝑖𝑔𝑛(𝜈𝑎𝑡𝑥)⋅𝛼⋅𝜆𝑥⋅𝑑max⋅𝑠𝑖𝑛(𝜋𝑑2𝑑1),𝑑∈[𝑑1,0]
(2)
In the x-direction, 𝑠𝑖𝑔𝑛(𝑣𝑎𝑡𝑡𝑥) represents the positive and negative values of velocity, 𝛼 represents the attraction velocity intensity factor, and 𝑑max represents the maximum attraction velocity boundary radius. The product of 𝛼 and 𝑑max is significant as it defines the maximum velocity the robot can achieve.


An external file that holds a picture, illustration, etc.
Object name is sensors-23-09617-g004.jpg
Figure 4
Motion path of the manipulator during local oscillation.


Table 1
Comparison of experimental results between traditional VPF and improved VPF.


Google Scholar
33. Huang JZ. Research on the working environment 3D information detection of the industrial robot based on binocular vision. Thesis, South China University of Technology, Guangzhou, China, 2017.
GO TO REFERENCE
Google Scholar
34. Zhai JM, Lianzhong LI, Peisen GUO, et al. Design and experiment on M2M2A of multi-robot intelligent collaboration. Robot 2017; 39(4): 415–422.
GO TO REFERENCE
Google Scholar
35. Chen YD, Liang Y, Gu PP. Detection collision algorithm for two-manipulator system. J Beijing Univ Aero Astro 2013; 39: 1644–1648.
GO TO REFERENCE
Google Scholar
36. Bosscher P, Daniel H. Real-time collision avoidance algorithm for robotic manipulators. In: 2009 IEEE international conference on technologies for practical robot applications, Woburn, MA, United states, 9–10 November 2009, pp. 113–122. IEEE.
GO TO REFERENCE
Google Scholar
37. Peng H. Singular avoidance and vibration suppression in trajectory planning of 6-DOF serial robot. Thesis. Harbin Institute of Technology, China, 2015.
GO TO REFERENCE
Google Scholar
Similar articles:
Restricted access
Distributed path planning of a multi-robot system based on the neighborhood artificial potential field approach
Open Access
Mobile Robot Collision Avoidance in Human Environments
Open Access
Real-Time Obstacle Avoidance for a Swarm of Autonomous Mobile Robots
Sage recommends:
SAGE Knowledge
Entry
Perceptual Development: Visually Guided Reaching
SAGE Knowledge
Book chapter
Projectiles
SAGE Knowledge
Entry
Shortest-Path Problem
Also from Sage
CQ LibraryElevating debateopens in new tab
Sage DataUncovering insightopens in new tab
Sage Business CasesShaping futuresopens in new tab
Sage CampusUnleashing potentialopens in new tab
Sage KnowledgeMultimedia learning resourcesopens in new tab
Sage Research MethodsSupercharging researchopens in new tab


An external file that holds a picture, illustration, etc.
Object name is sensors-23-09617-g002.jpg
Figure 2
Attraction and repulsive velocity curve model of x direction. (a) Attraction velocity; (b) Repulsive velocity.


Figure 15b shows that the velocity profile of the manipulator is not smooth enough in the obstacle-avoidance sequence. Due to the setting of the virtual target point, the 2-axis and 3-axis of the manipulator need to steer for a short time, so the velocity change in the relevant axes at the beginning and end nodes of obstacle avoidance is also larger. However, the operation of the manipulator is relatively more stable compared to the frequent oscillations. The distances between the manipulator links and the obstacles during the entire process are shown in Figure 15c.


this knowledge about maneuver types can be used by an intelligent vehicle in avoiding a
potentially dangerous obstacle: a car avoiding a big truck may choose a rear avoidance
maneuver, even though a front maneuver might also be feasible, for the sake of safety. A
procedure for computing the sets of avoidance velocities is described in Appendix B.
4. Computing the avoidance tra jectories
This section presents a method for computing trajectories that avoid static and moving obstacles, reach the goal, and satisfy the robot's dynamic constraints. A trajectory
consists of a sequence of avoidance maneuvers, selected by searching over a tree of feasible
maneuvers computed at discrete time intervals. We propose a global search for o-line
applications, and a heuristic search for on-line applications.
4.1. Global Search
The tree of avoidance maneuvers is generated by computing the reachable avoidance
set RAV at discrete time intervals. The nodes on the tree correspond to the positions of
the robot at times ti, and the branches correspond to the avoidance maneuvers at those
positions. The operators expanding each node into its successors at time ti+1 = ti + T , i.e.
13
RAV
i+1,k
RAV i+1,h
n
i,j
n
i+1,h
n
i+1,k
RAV
i,j
e
j,k
e
j,h
o
i+1,h,1
o
i,j,h
o
i,j,k
o
i+1,h,2
o
i+1,k,1