Giter Site home page Giter Site logo

fjp / frenet Goto Github PK

View Code? Open in Web Editor NEW
217.0 5.0 66.0 1.81 MB

Transform Frenet (s,d) to local Cartesian (x,y) coordinates.

Home Page: https://fjp.at/posts/optimal-frenet/

License: MIT License

MATLAB 3.75% Python 4.04% Jupyter Notebook 31.83% HTML 60.36% Shell 0.02%
trajectory frenet frenet-transformation vehicle path-planning pathfinding-algorithm

frenet's Issues

Frenet to Cartesian Coordinates

Hello,

I have some doubts in the FRT2Cart function in MATLAB.

    nNextRefPoint = 0;

    while ((i_fS > i_faRefRunLength(nNextRefPoint+1)) && (nNextRefPoint < length(i_faRefRunLength)))

        nNextRefPoint = nNextRefPoint + 1;
    end

    nPrevRefPoint = nNextRefPoint-1;

Can you please explain me what these variables mean? And what exactly is happening here?

Transform between cartesian and frenet coordinate system

Hi @fjp , I'm working on my own version of this algorithm to generate a local path to avoid obstacles.
Currently I have a problem which I have no idea about how to fix. Here is the image to show my problem, the pink path is the original reference path, the left blue path is the generated path to avoid the obstacle lies on the original path, and the red circle marks my problem. When I try to convert my path from Frenet coordinate (s, d) to Cartesian coordinate (x, y), sometimes the path will suddenly turn back like the red circle part shows.
frenet_frame_bug

I use the spline function to map between s-to-x and s-to-y according to the original reference path. And I calculate the new path point which has d distance away from the original reference path and is perpendicular to the tangent direction of the relative point on the original path. I think the problem is coming from the curvature of the original path, but I have no idea about how to fix it. Can you give me some suggestion?

Difference in Cart2FRT and FRT2Cart in transformation.m

Hi Franz,

I would first like to thank you for building such a repo. I was trying out the transformation.m file. At the end of the code, we compare transform from Cartesian to Frenet and back to Cartesian. The results are not the same and we have some error in both the x and y positions. I thought this could be due to the ds=0.1. However, reducing ds by orders of magnitude did not help much in reducing the error. Is there any specific reason for this or is there a bug in the code that we need to look for?

Thanks,
Iman

There is an error about Qt when running

python main.py 
['/home/ugv-yu/bryan/Frenet/frenet/python', '/usr/local/lib/python2.7/dist-packages/cryptography-2.4.2-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/cffi-1.11.5-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/asn1crypto-0.24.0-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/idna-2.8-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/pycparser-2.19-py2.7.egg', '/home/ugv-yu/catkin_ws/devel/lib/python2.7/dist-packages', '/home/ugv-yu/Autoware/ros/devel/lib/python2.7/dist-packages', '/opt/ros/kinetic/lib/python2.7/dist-packages', '/usr/share/qgis/python', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/ugv-yu/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
['/home/ugv-yu/bryan/Frenet/frenet/python', '/usr/local/lib/python2.7/dist-packages/cryptography-2.4.2-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/cffi-1.11.5-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/asn1crypto-0.24.0-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/idna-2.8-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/pycparser-2.19-py2.7.egg', '/home/ugv-yu/catkin_ws/devel/lib/python2.7/dist-packages', '/home/ugv-yu/Autoware/ros/devel/lib/python2.7/dist-packages', '/opt/ros/kinetic/lib/python2.7/dist-packages', '/usr/share/qgis/python', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/ugv-yu/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
Create Frenet Main Window
('create DynamicsWidget', <PySide2.QtWidgets.QWidget object at 0x7f231cc6df80>)
(u'new MplWidget', <PySide2.QtWidgets.QWidget object at 0x7f231cc6df80>)
Traceback (most recent call last):
  File "main.py", line 24, in <module>
    oFrenetMainWindow = fmw.FrenetMainWindow()
  File "/home/ugv-yu/bryan/Frenet/frenet/python/gui/frenet_main_window.py", line 7, in __init__
    self.setupUi(self)
  File "/home/ugv-yu/bryan/Frenet/frenet/python/gui/ui/frenet_main_window_ui.py", line 25, in setupUi
    self.dynamics_widget = DynamicsWidget(self.centralwidget)
  File "/home/ugv-yu/bryan/Frenet/frenet/python/gui/widgets/dynamics_widget.py", line 18, in __init__
    super(DynamicsWidget, self).__init__(self.oFig, parent)
  File "/home/ugv-yu/bryan/Frenet/frenet/python/gui/widgets/mplwidget.py", line 25, in __init__
    self.canvas = MplCanvas(i_oFig)                  # Create canvas object
  File "/home/ugv-yu/bryan/Frenet/frenet/python/gui/widgets/mplwidget.py", line 17, in __init__
    Canvas.setSizePolicy(self, QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
TypeError: arguments did not match any overloaded call:
  QWidget.setSizePolicy(QSizePolicy): argument 2 has unexpected type 'PySide2.QtWidgets.QSizePolicy.Policy'
  QWidget.setSizePolicy(QSizePolicy.Policy, QSizePolicy.Policy): argument 2 has unexpected type 'PySide2.QtWidgets.QSizePolicy.Policy'

When I use python main.py in terminal, the above is unfolded there. I think there is an mismatch for PySide2 library maybe. The following is shown in my terminal.

>>> import PySide2
>>> print(PySide2.__version__)
2.0.0~alpha0

wrong polynomial coefficients in cQuarticPoly.m

Some polynomial coefficients are wrong in cQuarticPoly.m.

It should be:

line 30: x = obj.c(2) + 2 * obj.c(3).*t + 3 * obj.c(4).*t.^2 + 4 * obj.c(5).*t.^3;

line 34: x = 2 * obj.c(3) + 6 * obj.c(4).*t + 12 * obj.c(5).*t.^2;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.