GithubHelp home page GithubHelp logo

tracking_pid's People

Contributors

cesar-lopez-mar avatar mcfurry avatar rokusottervanger avatar timple avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

tracking_pid's Issues

Non zero angular velocity at the end of the path

Hi. Thank you for providing this great project for the community.
I am experimenting with path tracker and I realized that when the robot reaches to the end of path (or paused by publishing to /pause topic), after a few seconds, the angular velocity becomes non zero and causing the robot to rotate in place (please see the image below). What would be the reason of this behavior and how can I fix that?

rotate

Using flip_for_axis parameter to follow a path by driving backwards

Is it possible to use this parameter:

flip_for_axis (float, default: None) When enabled, the desired following distance between robot and control point (published on /trajectory) is inverted when the control point moves backwards along the given axis. Depending on the robot, this makes the robot drive backwards when moving in the indicated axis.

To follow a path wit a non-holonomic (dual differential drive robot) by driving backwards? If I do:

    <node name="interpolator" pkg="tracking_pid" type="path_interpolator">
        <param name="target_x_vel" value="0.7"/>
        <param name="target_x_acc" value="100.0"/>
        <param name="flip_for_axis" value="x"/>
    </node>

and then:
roslaunch tracking_pid test_tracking_pid.test rviz:=true

I get no movement and:

[ INFO] - /fake_odometry: [1655821967.503094200] Started mobile robot simulator update loop, listening on cmd_vel topic
[ INFO] - /controller: [1655821967.717553000] Transform between map and base_link found
[ERROR] - /interpolator: [1655821968.183834] SimpleActionServer.internal_goal_callback - exception

Does the path need to be specified differently? Could you give me an example?
Thank you!

maximum /cmd_vel velocity cap limit

with the current implementation, there no maximum limit on /cmd_vel velocities. So if the pid values are not tuned properly, the output on cmd_vel can reach very high values.

Is there way to limit the maximum output velocities?

Thank you

Avoid stopping in each waypoint

Hi,

I'm trying to use tracking_pid in a sinuous path with waypoints each 0.5m, using a slow robot. I've noticed that the interpolator starts and stops in each waypoint, as if each path segment were independent. This results in a very "bumpy" tracking (video). Even if I set a extremely high acceleration, it keeps stopping in the waypoints if the angle between segments is higher than a few degrees, as it can be seen in the few first segments of this other video.

Is there a way to make the interpolator to not decelerate in each waypoint?

About the pause function

Hi, thank you for the great tool.
I have a tiny issue, I am trying to go to a point with the package, and after reaching there, I give another point. You can think of it as a loop between the corners of a triangle shape. I want to pause while going to these corners from time to time.

The problem is when I publish 'true' data to the /pause topic, I can see the interpolator marker stop, and the robot also stops when reaches that position. There is no problem when I publish a 'false' data after a few seconds but, If I wait for a longer time, as 30-60 seconds, then publish the 'false' data, the interpolator assumes that it has arrived and starts from the next corner. It also publishes a 'true' to /trajectory_finished before doing this.

Is there an internal timeout for this that I can change, or am I doing something wrong?

Tracking a curve?

Hi, I tried the simulation, but it only showed that the robot was tracking straight lines and turning in place at the corner. Does it be able to track a curve? Thank you very much!

PGP mode

Hi, I want to try the PGP mode specified in the readme--"If a smooth path is provided, the controller has the option to track the path with the base_link directly instead of lagging behind a carrot." I have two questions about that:

  1. How to configure this mode?
  2. What's the smooth path(I mean that distance between points and curvature or something else ), and how to input it to the controller?

Thank you very much!~

How to resolve differential wheel robot lateral error if the location module is unstable in real world

Thanks for your great project.
I am try use this repo to control cleanning robot, and I add a feature can judge whether the robot has reached the target. I found the tracking pid porcess can work well with mobile_robot_simulator.
But when I move it to a real robot, there are often lateral errors when reaching the target point. It seems caused by unstable location.
Are there any solutions or suggestions for this situation?

Could not load the plugin with the name "tracking_pid" and the type "tracking_pid/TrackingPidLocalPlanner"

I am facing the below error when I try to use tracking_pid plugin in mbf.

The tracking_pid controller works fine if I use it as node.

`process[odometry_publisher-1]: started with pid [11379]
process[msg_to_tf-2]: started with pid [11380]
process[pointcloud_to_laserscan-3]: started with pid [11381]
process[map_server_site-4]: started with pid [11386]
process[amcl-5]: started with pid [11388]
process[move_base_flex-6]: started with pid [11394]
process[move_base-7]: started with pid [11399]
[ WARN] [1603760737.217684872]: local_costmap: Pre-Hydro parameter "static_map" unused since "plugins" is provided
[ WARN] [1603760737.220514480]: local_costmap: Pre-Hydro parameter "map_type" unused since "plugins" is provided
[ INFO] [1603760737.222742401]: local_costmap: Using plugin "static_layer"
[ INFO] [1603760737.239114038]: Requesting the map...
[ INFO] [1603760737.446612419]: Resizing static layer to 672 X 640 at 0.050000 m/pix
[ INFO] [1603760737.545596220]: Received a 672 X 640 map at 0.050000 m/pix
[ INFO] [1603760737.557226404]: local_costmap: Using plugin "obstacle_layer"
[ INFO] [1603760737.567109004]: Subscribed to Topics: laser_scan_sensor
[ INFO] [1603760737.599795060]: local_costmap: Using plugin "inflation_layer"
[ WARN] [1603760737.693645234]: global_costmap: Pre-Hydro parameter "static_map" unused since "plugins" is provided
[ WARN] [1603760737.694742010]: global_costmap: Pre-Hydro parameter "map_type" unused since "plugins" is provided
[ INFO] [1603760737.696426039]: global_costmap: Using plugin "static_layer"
[ INFO] [1603760737.706885876]: Requesting the map...
[ INFO] [1603760737.710352435]: Resizing costmap to 672 X 640 at 0.050000 m/pix
[ INFO] [1603760737.810073607]: Received a 672 X 640 map at 0.050000 m/pix
[ INFO] [1603760737.820844943]: global_costmap: Using plugin "obstacle_layer"
[ INFO] [1603760737.835055957]: Subscribed to Topics: laser_scan_sensor
[ INFO] [1603760737.871276862]: global_costmap: Using plugin "inflation_layer"
[ INFO] [1603760738.008209214]: The plugin with the type "full_coverage_path_planner/SpiralSTC" has been loaded successfully under the name "SpiralSTC".

[FATAL] [1603760738.010230248]: Failed to load the tracking_pid/TrackingPidLocalPlanner controller, are you sure it's properly registered and that the containing library is built? According to the loaded plugin descriptions the class tracking_pid/TrackingPidLocalPlanner with base class type mbf_costmap_core::CostmapController does not exist. Declared types are MultiLibraryClassLoader: Could not create object of class type tracking_pid::TrackingPidLocalPlanner as no factory exists for it. Make sure that the library exists and was explicitly loaded through MultiLibraryClassLoader::loadLibrary()
[ERROR] [1603760738.010411055]: Could not load the plugin with the name "tracking_pid" and the type "tracking_pid/TrackingPidLocalPlanner"!`

Thank you

About the robot walking bumps and the wrong turning angle

Hello, when I use the following configuration, my robot is running very bumpy
深度截图_选择区域_20211118165732

深度截图_选择区域_20211118165742

深度截图_选择区域_20211118165858
When walking along a straight line, there will be forward and backward motions, the trajectory is as follows:
深度截图_选择区域_20211118165226

I am not sure how to adjust the parameters.I look forward to your help.

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.