nobleo / tracking_pid Goto Github PK
View Code? Open in Web Editor NEWPID controller following a moving carrot
License: Apache License 2.0
PID controller following a moving carrot
License: Apache License 2.0
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?
This seems like it's a predecessor of https://github.com/nobleo/path_tracking_pid. Is this version deprecated? Because in that case, we should clean it up.
is there any paper or publication related to this package explaining how it works more in details? I am talking about more math and details of the control of it.
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!
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
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?
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?
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!
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:
Thank you very much!~
Hello, I want to know how to use the package on the Ackermann chassis, and add some param about setting something like Wheelbase, steering angle, max speed.
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?
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
Is there a way to get obstacle avoidance working with move_base_flex using tracking_pid as local planner/controller?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.