GithubHelp home page GithubHelp logo

nobleo / full_coverage_path_planner Goto Github PK

View Code? Open in Web Editor NEW
524.0 11.0 147.0 312 KB

Full coverage path planning provides a move_base_flex plugin that can plan a path that will fully cover a given area

License: Apache License 2.0

CMake 2.26% C++ 84.55% Python 13.19%

full_coverage_path_planner's Introduction

Full Coverage Path Planner (FCPP)

Overview

This package provides an implementation of a Full Coverage Path Planner (FCPP) using the Backtracking Spiral Algorithm (BSA), see [1].

This packages acts as a global planner plugin to the Move Base package (http://wiki.ros.org/move_base).

BSA

The user can configure robot radius and tool radius separately:

robot_plus_tool

Keywords: coverage path planning, move base

License

Apache 2.0

Author(s): Yury Brodskiy, Ferry Schoenmakers, Tim Clephas, Jerrel Unkel, Loy van Beek, Cesar lopez

Maintainer: Cesar Lopez, [email protected]

Affiliation: Nobleo Projects BV, Eindhoven, the Netherlands

The Full Coverage Path Planner package has been tested under ROS Melodic and Ubuntu 18.04.

Installation

Building from Source

Dependencies

Building

To build from source, clone the latest version from this repository into your workspace and compile the package using

cd catkin_workspace/src
git clone https://github.com/nobleo/full_coverage_path_planner.git
cd ../
catkin_make

Unit Tests

All tests can be run using:

catkin build full_coverage_path_planner --catkin-make-args run_tests

test_common

Unit test that checks the basic functions used by the repository

test_spiral_stc

Unit test that checks the basis spiral algorithm for full coverage. The test is performed for different situations to check that the algorithm coverage the accessible map cells. A test is also performed in randomly generated maps.

test_full_coverage_path_planner.test

ROS system test that checks the full coverage path planner together with a tracking pid. A simulation is run such that a robot moves to fully cover the accessible cells in a given map.

Usage

Run a full navigation example using:

roslaunch full_coverage_path_planner test_full_coverage_path_planner.launch

Give a 2D-goal in rviz to start path planning algorithm

Depends on:

mobile_robot_simulator that integrates /cmd_vel into a base_link TF-frame and an odometry publisher

tracking_pid Global path tracking controller

Launch files

test/full_coverage_path_planner/test_full_coverage_path_planner.launch

Runs the full_coverage_path_planner global planner in combination with tracking PID local planner. Moreover a coverage progress tracking node is launched to monitor the coverage progress. Mobile_robot_simulator is used to integrate cmd_vel output into TF and odometry.

Arguments:

  • map: path to a global costmap. Default: $(find full_coverage_path_planner)/maps/basement.yaml)
  • target_x_vel: target x velocity for use in interpolator. Default: 0.2
  • target_yaw_vel: target yaw velocity for use in interpolator. Default: 0.2
  • robot_radius: radius of the robot for use in the global planner. Default: 0.6
  • tool_radius: radius of the tool for use in the global planner. Default: 0.2

Start planning and tracking by giving a 2D nav goal.

Nodes

coverage_progress

The CoverageProgressNode keeps track of coverage progress. It does this by periodically looking up the position of the coverage disk in an occupancy grid. Cells within a radius from this position are 'covered'

Subscribed Topics

  • /tf ([tf2_msgs/TFMessage]) ros tf dynamic transformations
  • /tf_static ([tf2_msgs/TFMessage]) ros tf static transformations

Published Topics

  • /coverage_grid ([nav_msgs/OccupancyGrid]) occupancy grid to visualize coverage progress
  • /coverage_progress ([std_msgs/Float32]) monitors coverage (from 0 none to 1 full) on the given area

Services

  • /coverage_progress/reset ([std_srvs/SetBool]) resets coverage_progress node. For instance when robot position needs to be manually updated

Parameters

  • target_area/x: size in x of the target area to monitor
  • target_area/y: size in y of the target area to monitor
  • coverage_radius: radius of the tool to compute coverage progress

Plugins

full_coverage_path_planner/SpiralSTC

For use in move_base(_flex) as "base_global_planner"="full_coverage_path_planner/SpiralSTC". It uses global_cost_map and global_costmap/robot_radius.

Parameters

  • robot_radius: robot radius, which is used by the CPP algorithm to check for collisions with static map
  • tool_radius: tool radius, which is used by the CPP algorithm to discretize the space and find a full coverage plan

References

[1] GONZALEZ, Enrique, et al. BSA: A complete coverage algorithm. In: Proceedings of the 2005 IEEE International Conference on Robotics and Automation. IEEE, 2005. p. 2040-2044.

Bugs & Feature Requests

Please report bugs and request features using the Issue Tracker.

Acknowledgments

rosin_logo

Supported by ROSIN - ROS-Industrial Quality-Assured Robot Software Components. More information: rosin-project.eu

eu_flag

This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement no. 732287.

full_coverage_path_planner's People

Contributors

cesar-lopez-mar 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  avatar  avatar  avatar  avatar  avatar

full_coverage_path_planner's Issues

Altering waypoints

Is it possible to alter the number of waypoints or set a maximum distance between two waypoints?

Running on Noetic

I got it working on noetic but when I run
roslaunch full_coverage_path_planner test_full_coverage_path_planner.launch
I get the following error
Screenshot from 2021-02-08 13-51-23
Screenshot from 2021-02-08 13-52-21

Unable to complete the test launch

Hello together,

first let me say this is my first issue report and ask for help. I really tried to look for a solution, but was unable to fix it with other advices.

I wanted to run the navigation example with

roslaunch full_coverage_path_planner test_full_coverage_path_planner.launch

but I always get an error which tells me that
The last action goal to "exe_path" has been REJECTED

Here is my whole console

:~/catkin_ws$ roslaunch full_coverage_path_planner test_full_coverage_path_planner.launch
... logging to /home/user/.ros/log/b38521c2-5e6a-11eb-8146-5076af8bd684/roslaunch-LENOVO-27392.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://LENOVO:38431/

SUMMARY
========

PARAMETERS
 * /controller/Kd_lat: 0.3
 * /controller/Kd_long: 0.5
 * /controller/Ki_lat: 0.0
 * /controller/Ki_long: 0.0
 * /controller/Kp_lat: 4.0
 * /controller/Kp_long: 2.0
 * /controller/controller_debug_enabled: True
 * /controller/l: 0.5
 * /controller/track_base_link: True
 * /coverage_progress/coverage_radius: 0.75
 * /coverage_progress/map_frame: /coverage_map
 * /coverage_progress/target_area/x: 10
 * /coverage_progress/target_area/y: 10
 * /grid_server/frame_id: /map
 * /interpolator/target_x_vel: 0.5
 * /interpolator/target_yaw_vel: 0.4
 * /mobile_robot_simulator/odometry_topic: /odom
 * /mobile_robot_simulator/publish_map_transform: True
 * /mobile_robot_simulator/publish_rate: 10.0
 * /mobile_robot_simulator/velocity_topic: /move_base/cmd_vel
 * /move_base_flex/SpiralSTC/robot_radius: 0.8
 * /move_base_flex/SpiralSTC/tool_radius: 0.75
 * /move_base_flex/global_costmap/robot_radius: 0.8
 * /move_base_flex/local_costmap/global_frame: odom
 * /move_base_flex/local_costmap/height: 5.0
 * /move_base_flex/local_costmap/publish_frequency: 5.0
 * /move_base_flex/local_costmap/resolution: 0.05
 * /move_base_flex/local_costmap/robot_base_frame: base_link
 * /move_base_flex/local_costmap/rolling_window: True
 * /move_base_flex/local_costmap/static_map: True
 * /move_base_flex/local_costmap/update_frequency: 10.0
 * /move_base_flex/local_costmap/width: 5.0
 * /move_base_flex/planners: [{'type': 'full_c...
 * /move_base_flex/tf_timeout: 1.5
 * /rosdistro: melodic
 * /rosversion: 1.14.10

NODES
  /
    controller (tracking_pid/controller)
    coverage_progress (full_coverage_path_planner/coverage_progress)
    grid_server (map_server/map_server)
    interpolator (tracking_pid/path_interpolator)
    map_to_coveragemap (tf/static_transform_publisher)
    mobile_robot_simulator (mobile_robot_simulator/mobile_robot_simulator_node)
    move_base (mbf_costmap_nav/move_base_legacy_relay.py)
    move_base_flex (mbf_costmap_nav/mbf_costmap_nav)
    publish_simple_goal (rostopic/rostopic)
    rviz (rviz/rviz)

ROS_MASTER_URI=http://localhost:11311

process[move_base_flex-1]: started with pid [27407]
process[move_base-2]: started with pid [27408]
process[mobile_robot_simulator-3]: started with pid [27409]
process[grid_server-4]: started with pid [27415]
process[interpolator-5]: started with pid [27422]
process[controller-6]: started with pid [27424]
process[map_to_coveragemap-7]: started with pid [27431]
process[coverage_progress-8]: started with pid [27437]
process[publish_simple_goal-9]: started with pid [27443]
process[rviz-10]: started with pid [27446]
[ INFO] [1611512931.559051715]: CONTROLLER PARAMETERS
[ INFO] [1611512931.559747769]: -----------------------------------------
[ INFO] [1611512931.559768614]: Controller enabled: 1
[ INFO] [1611512931.559784579]: Controller DEBUG enabled: 1
[ INFO] [1611512931.559798150]: Distance L: 0.500000
[ INFO] [1611512931.559809217]: Feedback (long, lat, ang): (1, 1, 1)
[ INFO] [1611512931.559819455]: Feedforward (long, lat, ang): (1, 1, 0)
[ INFO] [1611512931.559830268]: Longitudinal gains: (Kp: 2.000000, Ki, 0.000000, Kd, 0.500000)
[ INFO] [1611512931.559843832]: Lateral gains: (Kp: 4.000000, Ki, 0.000000, Kd, 0.300000)
[ INFO] [1611512931.559854787]: Angular gains: (Kp: 1.000000, Ki, 0.000000, Kd, 0.300000)
[ INFO] [1611512931.559864948]: Robot type (holonomic): (0)
[ INFO] [1611512931.559875128]: Track base link: (1)
[ INFO] [1611512931.559884994]: LPF cutoff frequency: 1/4 of sampling rate
[ INFO] [1611512931.559897434]: Integral-windup limit: 1000.000000
[ INFO] [1611512931.559911008]: Saturation limits xy: 10.000000/-10.000000
[ INFO] [1611512931.559921847]: Saturation limits ang: 10.000000/-10.000000
[ INFO] [1611512931.559932493]: map frame: 
[ INFO] [1611512931.559945334]: base_link frame: 
[ INFO] [1611512931.559955573]: -----------------------------------------
[ INFO] [1611512931.610990041]: Initialized mobile robot simulator
[ INFO] [1611512931.611828495]: --- Starting MobileRobot simulator
[ INFO] [1611512931.711999915]: Started mobile robot simulator update loop, listening on cmd_vel topic
[ WARN] [1611512931.814464843]: local_costmap: Pre-Hydro parameter "static_map" unused since "plugins" is provided
[ INFO] [1611512931.851378176]: global_costmap: Using plugin "obstacle_layer"
[ INFO] [1611512931.856672013]:     Subscribed to Topics: 
[ INFO] [1611512931.866418209]: global_costmap: Using plugin "inflation_layer"
[ INFO] [1611512931.872480311]: Transform between map and base_link found
[ INFO] [1611512931.935174144]: The plugin with the type "full_coverage_path_planner/SpiralSTC" has been loaded successfully under the name "SpiralSTC".
[ INFO] [1611512931.939925375]: The plugin with the type "navfn/NavfnROS" has been loaded successfully under the name "navfn/NavfnROS".
[ WARN] [1611512931.940373403]: No controllers plugins configured! - Use the param "controllers", which must be a list of tuples with a name and a type.
[ WARN] [1611512931.940725386]: No recovery_behaviors plugins configured! - Use the param "recovery_behaviors", which must be a list of tuples with a name and a type.
[ WARN] [1611512933.169893385]: No plugins loaded at all!
[ERROR] [1611512933.170474303]: The last action goal to "exe_path" has been REJECTED

First, it had an error woth the navfn Plugin, but I was able to fix it.
So, if I try to set a 2D Nav goal like advised in the manual, I get this:

[ WARN] [1611525048.815634814]: The goal sent to the navfn planner is off the global costmap. Planning will always fail to this goal.
[ WARN] [1611525049.815711845]: The goal sent to the navfn planner is off the global costmap. Planning will always fail to this goal.
[ WARN] [1611525050.815746809]: The goal sent to the navfn planner is off the global costmap. Planning will always fail to this goal.
[ WARN] [1611525051.815781184]: The goal sent to the navfn planner is off the global costmap. Planning will always fail to this goal.
[ WARN] [1611525052.815819817]: The goal sent to the navfn planner is off the global costmap. Planning will always fail to this goal.
[ INFO] [1611525053.815602226]: Planning patience (5s) has been exceeded
[ WARN] [1611525053.815921465]: No Recovery Behaviors loaded!

So, does anyone have an idea how to fix the Error? I found this issue on move base issues, but the additions in the planner or connectors yaml didn't fix it.

I am really willed to try every solution you have and hope for help. Please tell me if you need more information, but I think I have everything as described in the manual.
Thanks a lot!

How to use full coverage path planner with `move_base`

How to move_ Base flex replace move_ Base

<param name="base_global_planner" value="full_coverage_path_planner/SpiralSTC" />
<param name="planner_frequency" value="0.0001" />
<param name="planner_patience" value="2.0" />

<param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />

<param name="controller_frequency" value="5.0" />
<param name="controller_patience" value="10.0" />

<rosparam file="$(find qingzhou_nav)/params/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find qingzhou_nav)/params/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find qingzhou_nav)/params/local_costmap_params.yaml" command="load" />
<rosparam file="$(find qingzhou_nav)/params/global_costmap_params.yaml" command="load" />

<rosparam file="$(find qingzhou_nav)/params/teb_local_planner_params.yaml" command="load" />

<!-- <rosparam file="$(find qingzhou_nav)/params/costmap_converter_params.yaml" command="load" /> -->
<rosparam file="$(find qingzhou_nav)/params/global_planner_params.yaml" command="load" />
<!-- <remap from="/odom" to="/odom_ekf"/>  -->
<remap from="/cmd_vel" to="/qingzhou/ackermann_steering_controller/cmd_vel"/> 
Do I only need to change the pkg and type, but doing so will result in an error message

ROS2 Port Status

Hi , I tried running the ros2 port into nav2 as a planner plugin, and I got some movement but no coverage statistics https://github.com/nobleo/full_coverage_path_planner#published-topics and no coverage behavior.

this issue is not to troubleshoot my issues 😄 but rather to ask:

  1. Is the ros2 port complete / usable?
  2. If Yes, maybe I can volunteer to put together a small tutorial for usage instructions
  3. If no, what are the parts that are missing that need help?

Foxy support

Do you plan to add Foxy support or Galactic is going to be the first supported ROS 2 distribution?

Repeat to go to the same trajectory

I used it in move base. I used the SpiralSTC as the global planner, DWA as the local planner . From the Figure one it can see that the planing is all-covered, it seems good. But when the robot goes, continues to go in a small-part trajectory , like the figure 2. What 's wrong with me?
1
2

Support for in-one-direction path pattern

Hi, Thanks for this great project!
I am experimenting with the full coverage path planning and (as it is obvious from the name of algorithm) it always create a spiral pattern path like the following image.
spiral
I was wondering if there is (or will be) any support for generating in-one-direction straight path pattern?
Thank you!

plugin

Hello, I would like to know if it can be integrated into Movebase as a plugin

Full coverage planner with kinematics

Hi there!

I came across this package while looking for a coverage planner for my robot. However, the robot I am using is not a omnidirectional one and uses Ackermann steering like kinematics. This robot is not able to turn in place and driving backwards is also hard. Is there an option for this package to include the dynamics of the robot you're using? For example, by combining this package with the SBPL planner http://wiki.ros.org/sbpl_lattice_planner?

Thanks!

The last action goal to "get_path" has been REJECTED

I found 5 questions while running the test file. Can you answer me if you have time?

The error is as follows

[ WARN] [1631606718.884913666]: No controllers plugins configured! - Use the param "controllers", which must be a list of tuples with a name and a type.
[ WARN] [1631606718.885140817]: No recovery_behaviors plugins configured! - Use the param "recovery_behaviors", which must be a list of tuples with a name and a type.
[ WARN] [1631606724.687575918]: No plugin loaded with the given name "navfn/NavfnROS"!
[ERROR] [1631606724.687814551]: The last action goal to "get_path" has been REJECTED
[ WARN] [1631606730.663607135]: No plugin loaded with the given name "navfn/NavfnROS"!
[ERROR] [1631606730.663776138]: The last action goal to "get_path" has been REJECTED
[ WARN] [1631606732.279851432]: No plugin loaded with the given name "navfn/NavfnROS"!
[ERROR] [1631606732.280002554]: The last action goal to "get_path" has been REJECTED

This is my terminal log

wuxi@wuxi-ThinkBook-14-G2-ITL:~/keenon_move_base$ roslaunch full_coverage_path_planner test_full_coverage_path_planner_plugin.launch 
... logging to /home/wuxi/.ros/log/7fd69b74-1532-11ec-a2e1-683e26832183/roslaunch-wuxi-ThinkBook-14-G2-ITL-31140.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://wuxi-ThinkBook-14-G2-ITL:45917/

SUMMARY
========

PARAMETERS
 * /grid_server/frame_id: /map
 * /mobile_robot_simulator/odometry_topic: /odom
 * /mobile_robot_simulator/publish_map_transform: True
 * /mobile_robot_simulator/publish_rate: 10.0
 * /mobile_robot_simulator/velocity_topic: /move_base/cmd_vel
 * /move_base_flex/SpiralSTC/robot_radius: 0.1
 * /move_base_flex/SpiralSTC/tool_radius: 0.1
 * /move_base_flex/global_costmap/robot_radius: 0.1
 * /move_base_flex/local_costmap/global_frame: odom
 * /move_base_flex/local_costmap/height: 5.0
 * /move_base_flex/local_costmap/publish_frequency: 5.0
 * /move_base_flex/local_costmap/resolution: 0.05
 * /move_base_flex/local_costmap/robot_base_frame: base_link
 * /move_base_flex/local_costmap/rolling_window: True
 * /move_base_flex/local_costmap/static_map: False
 * /move_base_flex/local_costmap/update_frequency: 10.0
 * /move_base_flex/local_costmap/width: 5.0
 * /move_base_flex/planners: [{'type': 'full_c...
 * /move_base_flex/tf_timeout: 1.5
 * /rosdistro: melodic
 * /rosversion: 1.14.11

NODES
  /
    grid_server (map_server/map_server)
    mobile_robot_simulator (mobile_robot_simulator/mobile_robot_simulator_node)
    move_base (mbf_costmap_nav/move_base_legacy_relay.py)
    move_base_flex (mbf_costmap_nav/mbf_costmap_nav)
    rviz (rviz/rviz)

auto-starting new master
process[master]: started with pid [31150]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 7fd69b74-1532-11ec-a2e1-683e26832183
process[rosout-1]: started with pid [31161]
started core service [/rosout]
process[move_base_flex-2]: started with pid [31168]
process[move_base-3]: started with pid [31169]
process[grid_server-4]: started with pid [31170]
process[mobile_robot_simulator-5]: started with pid [31176]
process[rviz-6]: started with pid [31184]
[ INFO] [1631606718.514820481]: Initialized mobile robot simulator
[ INFO] [1631606718.515173672]: --- Starting MobileRobot simulator
[ INFO] [1631606718.615366346]: Started mobile robot simulator update loop, listening on cmd_vel topic
[ WARN] [1631606718.817455280]: local_costmap: Parameter "plugins" not provided, loading pre-Hydro parameters
[ INFO] [1631606718.819886797]: local_costmap: Using plugin "obstacle_layer"
[ INFO] [1631606718.822719159]:     Subscribed to Topics: 
[ INFO] [1631606718.826130201]: local_costmap: Using plugin "inflation_layer"
[ WARN] [1631606718.843952612]: global_costmap: Parameter "plugins" not provided, loading pre-Hydro parameters
[ INFO] [1631606718.846914747]: global_costmap: Using plugin "obstacle_layer"
[ INFO] [1631606718.848340734]:     Subscribed to Topics: 
[ INFO] [1631606718.852268482]: global_costmap: Using plugin "inflation_layer"
[ INFO] [1631606718.884641199]: The plugin with the type "full_coverage_path_planner/SpiralSTC" has been loaded successfully under the name "SpiralSTC".
[ WARN] [1631606718.884913666]: No controllers plugins configured! - Use the param "controllers", which must be a list of tuples with a name and a type.
[ WARN] [1631606718.885140817]: No recovery_behaviors plugins configured! - Use the param "recovery_behaviors", which must be a list of tuples with a name and a type.
[ WARN] [1631606724.687575918]: No plugin loaded with the given name "navfn/NavfnROS"!
[ERROR] [1631606724.687814551]: The last action goal to "get_path" has been REJECTED
[ WARN] [1631606730.663607135]: No plugin loaded with the given name "navfn/NavfnROS"!
[ERROR] [1631606730.663776138]: The last action goal to "get_path" has been REJECTED
[ WARN] [1631606732.279851432]: No plugin loaded with the given name "navfn/NavfnROS"!
[ERROR] [1631606732.280002554]: The last action goal to "get_path" has been REJECTED

global planner

I found that when the car goes to a node, sometimes the global path changes significantly while driving, which leads to the car having two target points. Therefore, I feel that it is an algorithm problem. Sometimes the global path changes when the car goes to the next node

1234

Hello, I have now integrated the plugin into Movebase and lowered the frequency to plan a global full coverage path. However, after 3 to 4 rounds, the car will have two goals. This sentence means that it has a goal, and when the car advances towards this goal, the car will have the next goal, and the gap between these two goals is far. The car will move back and forth, causing it to be unable to move. How to solve this problem

How to use with 2 wheeled differential drive robot

Hi,

I'm trying to use your path planner with my 2 wheeled differential robot.
I adapted test_full_coverage_path_planner.launch to launch amcl instead of a robot simulation(I'm not sure whether this is correct or not).
It displays my map with a correct path and the robot on it but:

  • there is a huuuuuge yellow semi-transparent circle on top of it
  • it give me 'zip' object has no attribute 'pop' error in path_interpolator.py at line 490
  • the robot doesn't move

I'm trying to run it on ubuntu 20.04 with ros noetic.

Could you, please, help me sort those problems out ?
Thanks.

How to use with kinetic

Your project is so cool. I found your project not standard ROS project tree, I can not follow your readme to get the result(I am a begainner for ros and slam). Could you please tech me more detail?

the topic msg of /cmd_vel is all wrong

at start, i need just rotate 90 degrees counterclockwise, but /cmd_vel message have a non-zero linear.x, might be such number like -10 or 6 ...
a
i change the config " l " from defaut 0.5 to 0.001, then linear.x close to 0
BUT angular.z(the yaw) stays too long, my robot turns far more than 90 degs

Unable to use debug plot

Hi, I am currently trying to tweak your packages to enable obstacle avoidance. However, when I'm trying to use the debug plot to print the paths, it seems that every time after I execute the printPath function, the process just automatically shutdown. May I know the reason or is it just designed like that? Thanks a lot.
printPath_error

123

can you give me a email,i have some questions..............

No coverage grid with ros noetic

Hello, I just started using ros noetic and I am not able to see the coverage_grid on rviz
Screenshot from 2022-12-14 16-03-11
This is what I have in the terminal:
[ WARN] [1671029848.517256201]: No controllers plugins configured! - Use the param "controllers", which must be a list of tuples with a name and a type.
[ WARN] [1671029848.517653181]: No recovery_behaviors plugins configured! - Use the param "recovery_behaviors", which must be a list of tuples with a name and a type.
[ERROR] [1671029850.975278823]: Client [/move_base] wants topic /move_base_flex/get_path/result to have datatype/md5sum [mbf_msgs/GetPathActionResult/b591e970edf53cd68b6436930a31222a], but our version has [mbf_msgs/GetPathActionResult/cea7575678f0b58def62a7b79ff28969]. Dropping connection.
[ERROR] [1671029850.976710020]: Client [/move_base] wants topic /move_base_flex/move_base/result to have datatype/md5sum [mbf_msgs/MoveBaseActionResult/3ba171ea938c4125488c9249510c56e0], but our version has [mbf_msgs/MoveBaseActionResult/84bf66bbfc0d4e67d5dca5ff8ec7479d]. Dropping connection.
Exception in thread Thread-6:
Traceback (most recent call last):
File "/opt/ros/noetic/lib/python3/dist-packages/nav_msgs/msg/_OccupancyGrid.py", line 139, in serialize
buff.write(struct.Struct(pattern).pack(*self.data))
struct.error: required argument is not an integer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/topics.py", line 882, in publish
self.impl.publish(data)
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/topics.py", line 1066, in publish
serialize_message(b, self.seq, message)
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/msg.py", line 152, in serialize_message
msg.serialize(b)
File "/opt/ros/noetic/lib/python3/dist-packages/nav_msgs/msg/_OccupancyGrid.py", line 140, in serialize
except struct.error as se: self._check_types(struct.error("%s: '%s' when writing '%s'" % (type(se), str(se), str(locals().get('_x', self)))))
File "/opt/ros/noetic/lib/python3/dist-packages/genpy/message.py", line 393, in _check_types
check_type(n, t, getattr(self, n))
File "/opt/ros/noetic/lib/python3/dist-packages/genpy/message.py", line 312, in check_type
raise SerializationError('field %s must be a list or tuple type' % field_name)
genpy.message.SerializationError: field data must be a list or tuple type

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/timer.py", line 237, in run
self._callback(TimerEvent(last_expected, last_real, current_expected, current_real, last_duration))
File "/home/done/catkinn_ws/src/full_coverage_path_planner/nodes/coverage_progress", line 136, in _update_callback
self.grid_pub.publish(self.grid)
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/topics.py", line 886, in publish
raise ROSSerializationException(str(e))
rospy.exceptions.ROSSerializationException: field data must be a list or tuple type
[ INFO] [1671029851.770336624]: Initialized!
[ INFO] [1671029851.770488111]: Requesting grid!!
[ INFO] [1671029851.820172772]: nRows: 300 nCols: 300 nodeSize: 12
[ INFO] [1671029851.836082027]: naive cpp completed!
[ INFO] [1671029851.836224434]: Converting path to plan
[ INFO] [1671029851.836299095]: Received goalpoints with length: 243
[ INFO] [1671029851.836981868]: Plan ready containing 142 goals!
[ INFO] [1671029851.837017068]: Total visited: 236
[ INFO] [1671029851.837039418]: Total re-visited: 68
[ INFO] [1671029851.837057856]: Total accessible cells: 168
[ INFO] [1671029851.837098923]: Total accessible area: 60.480005
[ INFO] [1671029851.837120364]: Publishing plan!
[ INFO] [1671029851.837568329]: Plan published!
elapsed time: 0.027022
[ WARN] [1671029851.842086044]: No plugins loaded at all!
[ERROR] [1671029851.842599450]: The last action goal to "exe_path" has been REJECTED

Trying to get this package installed and running

When I follow your install instructions and run the command
sudo catkin build full_coverage_path_planner --catkin-make-args run_tests
It says this
The build space at '/home/ryley/catkin_ws/build' was previously built by 'catkin_make'. Please remove the build space or pick a different build space.
Please advise

Building on Humble with Colcon

Is there a port or guide to build this package on humble ? On humble catkin is having all sorts of issues, and lots of forums point to Colcon as the tool to build. Appreciate your help. Newbie here, sorry if this is not the right place to ask this question. Thanks !

Vehicle unable to move normally

Hello, I have now integrated the plugin into Movebase and lowered the frequency to enable global full coverage path planning. However, after 3 to 4 rounds, the car will have two goals, which means it has a goal. When the car advances towards this goal, the car will have the next goal, and then on the way to the next goal, it will go back to the previous goal, This leads to two targets within a certain area, and the car will move back and forth, ultimately causing it to be unable to travel. The relevant video has been sent to your email, please take a look

Running on Noetic

I got it working on noetic but when I run
roslaunch full_coverage_path_planner test_full_coverage_path_planner.launch
I get the following error from dynamic reconfigure
Screenshot from 2020-10-29 15-48-37
and while the robot moves on the path, the transform from the robot to the map seems to be missing.
Screenshot from 2020-10-29 15-43-47
Is this just an issue of publishing a transform myself and if so where can I get the transform info?

Unable to traverse all nodes

At the same time, I also want to ask why, after planning the global path as a plugin, the car does not follow the global path, but instead skips many nodes. My map has a total of more than 200 nodes, but it stops after walking more than 30 and says' goal reached '

Rotate the covered area

I changed the covered area from a circle to half one. When rotating the robot, the covered(white) area's direction is always facing the same direction not rotating as the robot rotates.

Does anyone have an idea on how to do it?

Global path keeps being replanned

Hi! First of all, congrats for this amazing planner.

My issue is the following: I am using this global planner with the "standard" DWA local planner with a MIR100 robot. The issue is that the global path keeps being replanned, which changes it and consequently "confuses" the local planner... Is there a way to stop the replanning? The issue, I think, is because the following line return false:

https://github.com/ros-planning/navigation/blob/4a3d261daa4e7eafa40bf7e4505f8aa8678d7bd7/dwa_local_planner/src/dwa_planner_ros.cpp#L279

Here is the output:

[ INFO] [1657043163.062917580] [/amcl]: Subscribed to map topic.
[ INFO] [1657043165.413494720, 0.278000000] [/amcl]: Received a 4000 X 4000 map @ 0.050 m/pix

[ INFO] [1657043166.021912054, 0.633000000] [/amcl]: Initializing likelihood field model; this can take some time on large maps...
[ INFO] [1657043166.453470730, 0.892000000] [/amcl]: Done initializing likelihood field model.
[ INFO] [1657043166.512034315, 0.932000000] [/move_base]: global_costmap: Using plugin "navigation_map"
[ INFO] [1657043166.537103211, 0.947000000] [/move_base]: Requesting the map...
[ INFO] [1657043166.826634421, 1.156000000] [/move_base]: Resizing costmap to 4000 X 4000 at 0.050000 m/pix
[ INFO] [1657043166.970490782, 1.268000000] [/move_base]: Received a 4000 X 4000 map at 0.050000 m/pix
[ INFO] [1657043166.977393031, 1.270000000] [/move_base]: global_costmap: Using plugin "obstacles"
[ INFO] [1657043167.023639203, 1.302000000] [/move_base]:     Subscribed to Topics: b_scan_marking b_scan_clearing f_scan_marking f_scan_clearing
[ INFO] [1657043167.255988941, 1.463000000] [/move_base]: global_costmap: Using plugin "inflation"
[ INFO] [1657043167.394213208, 1.560000000] [/move_base]: local_costmap: Using plugin "obstacles"
[ INFO] [1657043167.413624447, 1.568000000] [/move_base]:     Subscribed to Topics: b_scan_marking b_scan_clearing f_scan_marking f_scan_clearing
[ INFO] [1657043167.649547324, 1.724000000] [/move_base]: local_costmap: Using plugin "inflation"
[ INFO] [1657043167.736964917, 1.786000000] [/move_base]: Created local_planner dwa_local_planner/DWAPlannerROS
[ INFO] [1657043167.742482121, 1.790000000] [/move_base]: Sim period is set to 0.20
[ INFO] [1657043167.963765882, 1.977000000] [/move_base]: Recovery behavior will clear layer 'obstacles'
[ INFO] [1657043167.966332732, 1.979000000] [/move_base]: Recovery behavior will clear layer 'obstacles'
[ INFO] [1657043168.124892045, 2.095000000] [/move_base]: odom received!
[ INFO] [1657043184.366663390, 15.845000000] [/move_base]: Initialized!
[ INFO] [1657043184.366766129, 15.845000000] [/move_base]: Requesting grid!!
[ INFO] [1657043184.450873336, 15.901000000] [/move_base]: nRows: 4000 nCols: 4000 nodeSize: 36
[ INFO] [1657043185.137440231, 16.424000000] [/move_base]: naive cpp completed!
[ INFO] [1657043185.137805926, 16.425000000] [/move_base]: Converting path to plan
[ INFO] [1657043185.137925356, 16.425000000] [/move_base]: Received goalpoints with length: 47
[ INFO] [1657043185.138235457, 16.425000000] [/move_base]: Plan ready containing 42 goals!
[ INFO] [1657043185.138301807, 16.425000000] [/move_base]: Total visited: 43
[ INFO] [1657043185.138355446, 16.425000000] [/move_base]: Total re-visited: 8
[ INFO] [1657043185.138405593, 16.425000000] [/move_base]: Total accessible cells: 35
[ INFO] [1657043185.138488007, 16.425000000] [/move_base]: Total accessible area: 113.399994
[ INFO] [1657043185.138555335, 16.425000000] [/move_base]: Publishing plan!
[ INFO] [1657043185.139086697, 16.425000000] [/move_base]: Plan published!
elapsed time: 0.697469
[ INFO] [1657043185.164349688, 16.447000000] [/move_base]: Got new plan
[ WARN] [1657043187.802014937, 18.645000000] [/move_base]: Received an empty transformed plan.
[ INFO] [1657043187.803280971, 18.645000000] [/move_base]: Initialized!
[ INFO] [1657043187.803366249, 18.645000000] [/move_base]: Requesting grid!!
[ INFO] [1657043187.867208951, 18.685000000] [/move_base]: nRows: 4000 nCols: 4000 nodeSize: 36
[ INFO] [1657043188.544726092, 19.195000000] [/move_base]: naive cpp completed!
[ INFO] [1657043188.544895948, 19.196000000] [/move_base]: Converting path to plan
[ INFO] [1657043188.544929822, 19.196000000] [/move_base]: Received goalpoints with length: 44
[ INFO] [1657043188.545019570, 19.196000000] [/move_base]: Plan ready containing 40 goals!
[ INFO] [1657043188.545055748, 19.196000000] [/move_base]: Total visited: 41
[ INFO] [1657043188.545085152, 19.196000000] [/move_base]: Total re-visited: 6
[ INFO] [1657043188.545117628, 19.196000000] [/move_base]: Total accessible cells: 35
[ INFO] [1657043188.545153318, 19.196000000] [/move_base]: Total accessible area: 113.399994
[ INFO] [1657043188.545182931, 19.196000000] [/move_base]: Publishing plan!
[ INFO] [1657043188.545269745, 19.196000000] [/move_base]: Plan published!
elapsed time: 0.666397
[ INFO] [1657043188.603718655, 19.245000000] [/move_base]: Got new plan
[ WARN] [1657043192.104521582, 22.245000000] [/move_base]: Received an empty transformed plan.
[ INFO] [1657043192.104630676, 22.245000000] [/move_base]: Initialized!
[ INFO] [1657043192.104680962, 22.245000000] [/move_base]: Requesting grid!!
[ INFO] [1657043192.169518990, 22.287000000] [/move_base]: nRows: 4000 nCols: 4000 nodeSize: 36
[ INFO] [1657043192.815869998, 22.780000000] [/move_base]: naive cpp completed!
[ INFO] [1657043192.816085323, 22.780000000] [/move_base]: Converting path to plan
[ INFO] [1657043192.816124225, 22.780000000] [/move_base]: Received goalpoints with length: 47
[ INFO] [1657043192.816200912, 22.780000000] [/move_base]: Plan ready containing 46 goals!
[ INFO] [1657043192.816229059, 22.780000000] [/move_base]: Total visited: 43
[ INFO] [1657043192.816250849, 22.780000000] [/move_base]: Total re-visited: 8
[ INFO] [1657043192.816272361, 22.780000000] [/move_base]: Total accessible cells: 35
[ INFO] [1657043192.816297644, 22.780000000] [/move_base]: Total accessible area: 113.399994
[ INFO] [1657043192.816319155, 22.780000000] [/move_base]: Publishing plan!
[ INFO] [1657043192.816392839, 22.780000000] [/move_base]: Plan published!
elapsed time: 0.675305
[ INFO] [1657043192.923045960, 22.845000000] [/move_base]: Got new plan
[ WARN] [1657043196.958320193, 26.245000000] [/move_base]: Received an empty transformed plan.
[ INFO] [1657043196.958557028, 26.245000000] [/move_base]: Initialized!
[ INFO] [1657043196.958614648, 26.245000000] [/move_base]: Requesting grid!!
[ INFO] [1657043197.020202699, 26.274000000] [/move_base]: nRows: 4000 nCols: 4000 nodeSize: 36
[ INFO] [1657043197.627075346, 26.711000000] [/move_base]: naive cpp completed!
[ INFO] [1657043197.627278797, 26.711000000] [/move_base]: Converting path to plan
[ INFO] [1657043197.627318887, 26.711000000] [/move_base]: Received goalpoints with length: 44
[ INFO] [1657043197.627389637, 26.711000000] [/move_base]: Plan ready containing 44 goals!
[ INFO] [1657043197.627651407, 26.711000000] [/move_base]: Total visited: 41
[ INFO] [1657043197.627689960, 26.711000000] [/move_base]: Total re-visited: 6
[ INFO] [1657043197.627719573, 26.711000000] [/move_base]: Total accessible cells: 35
[ INFO] [1657043197.627753935, 26.711000000] [/move_base]: Total accessible area: 113.399994
[ INFO] [1657043197.627787320, 26.711000000] [/move_base]: Publishing plan!
[ INFO] [1657043197.628015705, 26.711000000] [/move_base]: Plan published!
elapsed time: 0.648956
[ INFO] [1657043197.793463950, 26.845000000] [/move_base]: Got new plan

PID Tuning strategy

Hi

I have tried the path planner with my Linorobot and had hard time following the coverage path
Screenshot from 2021-11-06 10-24-02

I have a few question regarding the adjustments of the Tracking parameters.

What should be the relation between the target speeds of the Interpolator and the max speed of the robot ( i have set 0.8 max speed of my robot.) Originaly the interpolator was to looking to far away vs the robot on long segments.

Now i have big overshoots on both side of the segments and at the end of the segments. What should be the best strategy to fix that ?

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.