Coder Social home page Coder Social logo

ipa_coverage_planning's Introduction

ipa_coverage_planning

Algorithms for floor plan segmentation and systematic coverage driving patterns.

If you find this software useful in your work, please cite our corresponding papers:

ROS Distro Support

Indigo Jade Kinetic Melodic Noetic
Branch indigo_dev indigo_dev indigo_dev melodic_dev noetic_dev
Status not supported not supported EOL supported supported
Version version version version version version

Travis - Continuous Integration

Status: Build Status

Quick start

  1. Bring up your robot or launch the turtlebot3 simulation

  2. Start the room exploration action server:

    roslaunch ipa_room_exploration room_exploration_action_server.launch
    
  3. Start the room exploration action client:

    roslaunch ipa_room_exploration room_exploration_client.launch  robot_env:=your-robot-env use_test_maps:=false
    

ipa_coverage_planning's People

Contributors

fmessmer avatar ipa-fez avatar ipa-fke avatar ipa-flg-pb avatar ipa-foj avatar ipa-josh avatar ipa-nhg avatar ipa-rmb avatar ipa-rmb-hs avatar ipa-uhr-mk avatar liwenzhe0914 avatar mbeutelspacher avatar mgruhler avatar muin028 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

ipa_coverage_planning's Issues

Contour Line Planner

While taking a look at the explanation in the ros wiki: http://wiki.ros.org/ipa_room_exploration it was impressive to see the contour line planner. Do you have a guide as to how to go about planning such a path? I notice that there are 8 options, would it be possible to point towards the algorithm that produces the paths that are contour like?

if (room_exploration_algorithm_ == 1)
	ROS_INFO("You have chosen the grid exploration method.");
else if(room_exploration_algorithm_ == 2)
	ROS_INFO("You have chosen the boustrophedon exploration method.");
else if(room_exploration_algorithm_ == 3)
	ROS_INFO("You have chosen the neural network exploration method.");
else if(room_exploration_algorithm_ == 4)
	ROS_INFO("You have chosen the convexSPP exploration method.");
else if(room_exploration_algorithm_ == 5)
	ROS_INFO("You have chosen the flow network exploration method.");
else if(room_exploration_algorithm_ == 6)
	ROS_INFO("You have chosen the energy functional exploration method.");
else if(room_exploration_algorithm_ == 7)
	ROS_INFO("You have chosen the voronoi exploration method.");
else if(room_exploration_algorithm_ == 8)
	ROS_INFO("You have chosen the boustrophedon variant exploration method.");

Readme Not clear enough

Hello,
I am trying to launch the package and I have few questions about it.

  1. First do I need to launch the segmentation and navigation or does the exploration does the job?
  2. Second I was not able to change the map even tho I added it in https://github.com/ipa320/ipa_coverage_planning/tree/noetic_dev/ipa_room_segmentation/common/files/test_maps
  3. Third, I could not obtain a different path planning even after changing the room_exploration_algorithm in the room_exploration_action_server_params.yaml file
  4. Finally, my robot never moved even if I have a map and a path generated
    I am missing something or doing something the wrong way? Thanks in advance

How to run the code?

Hello, I am a ROS beginner. Thank you very much for your open source code. I want to ask you how to use it. After I installed ROS, I still cannot run
roslaunch ipa_room_exploration room_exploration_action_server.launch

Running client.launch reveals that the image differs greatly from the paper experiment

Dear Author, when I run the command roslaunch ipa_room_exploration room_exploration_client.launch, the result I run is shown below, which is very different from the result in the paper. And when I change different algorithm for room exploration to test the image you gave, I found that each Coverage Path Planning has basically the same result, and it is very different from the one in the paper. Thank you.

c0eb1abf59708e66a2f4cb8b906eac6

Tool size greater than robot size

Hello I am using the room_exploration software, the boustrophedon explorator in particular. In my case the robot is actually carrying a sensor that collects data from the surrounding (humidity sensor) so it need not be considered for obstacle avoidance path planner but only used to check to get maximum coverage. For example robot_radius is 0.6, tool_radius is 1.5.

I have tested this and its not possible currently. I can help build this feature as i am interested in this, Could i get your expertise in understanding what needs to be done for this ? Is there any recommendation on where i should be starting from ?

Is there anyway to achieve this already with Field of view ?

[ROS Melodic] ipa_room_exploration with cob_robot [ROBOT=raw3-3]

I'm trying to implement the ipa_coverage_planning with the ipa's cob_robot , inside cob_simulation
ROBOT=raw3-3 and ROBOT_ENV=ipa-apartment
my commands in order are :

roslaunch cob_bringup_sim robot.launch
roslaunch cob_navigation_global 2dnav_ros_dwa.launch
roslaunch cob_navigation_global rviz.launch
roslaunch ipa_room_exploration room_exploration_action_server.launch
roslaunch ipa_room_exploration room_exploration_client.launch

I get the path generated for ipa-apartment in rviz but its not correctly alinged with the map.
as shown below:
ipa_room_exploration

also i have editied the yaml file as mentioned in #ipa320/autopnp#12 (comment)
so its supposed to follow the path generated but it's not executing the generated path.
what am i missing here?

First point of the boustrophedon trajectory ?

Hello,

I would like to use the Boustrophedon algorithm for a surface overlay. However, I need the overlap to start at the front door of the room to avoid the robot rolling on its cable.

However, I don't understand how the first point of the trajectory is determined. I saw that boustrophedon first divides the room into cells that can be easily overlapped, that it draws a path in each of them, and that it then connects them all together to form the final path.

Does anyone know how the first point of each cell's path is determined, if this is configurable and how? Does the algorithm take into account the position of the robot? In which case I would just have to run the Boustrophedon algorithm when my robot is at the door?
Also it would be interesting for me to know how the order of the cells is chosen.

Thanks in advance for your answers!

Adrien

Translated with www.DeepL.com/Translator (free version)

Some of the points covered by the path are biased

Dear author, I have modified part of the Boustrophedon Coverage Path Planning parameter Settings to achieve the results as shown below, there are some minor problems, may I ask what causes some points to deviate? How to achieve a result like the second figure?
6bd381f112a03ae3223a7ec80050475
8a78880c2da1edd8219ecfb2fe9ce90

room_segmentation_algorithm:4 can not run

When I set parameter room_segmentation_algorithm to 4 or 5 to run “room_segmentation_action_client" in ROS Kinetic, the program crashed and the server was restarted. However, when room_segmentation_algorithm was set to 1, 2, and 3, the program was OK.
When the program crashed, the server and client output the following contents respectively.

room_segmentation_action_server:
[ INFO] [1635251329.983710373]: *****Segmentation action server*****
[ INFO] [1635251329.983728404]: map resolution is : 0.050000
[ INFO] [1635251329.983760120]: segmentation algorithm: 4
[ INFO] [1635251329.993809649]: Starting to label the map.
[ INFO] [1635251330.054562425]: Loaded training results.
[room_segmentation/room_segmentation_server-2] process has died [pid 13641, exit code -11, cmd /home/sxy/test_ros_ws/devel/lib/ipa_room_segmentation/room_segmentation_server __name:=room_segmentation_server __log:=/home/sxy/.ros/log/2a644bf4-3658-11ec-8a68-6cb311407a0a/room_segmentation-room_segmentation_server-2.log].
log file: /home/sxy/.ros/log/2a644bf4-3658-11ec-8a68-6cb311407a0a/room_segmentation-room_segmentation_server-2*.log
[room_segmentation/room_segmentation_server-2] restarting process
process[room_segmentation/room_segmentation_server-2]: started with pid [14536]

room_segmentation_action_client:
[ INFO] [1635251328.946489590]: Action server started, sending goal.
[ WARN] [1635251332.454743307]: Transitioning goal to LOST
[ INFO] [1635251332.454935510]: Finished successfully!
terminate called after throwing an instance of 'cv_bridge::Exception'
what(): Unrecognized image encoding []
[room_segmentation/room_segmentation_client-1] process has died [pid 14426, exit code -6, cmd /home/sxy/test_ros_ws/devel/lib/ipa_room_segmentation/room_segmentation_client __name:=room_segmentation_client __log:=/home/sxy/.ros/log/2a644bf4-3658-11ec-8a68-6cb311407a0a/room_segmentation-room_segmentation_client-1.log].
log file: /home/sxy/.ros/log/2a644bf4-3658-11ec-8a68-6cb311407a0a/room_segmentation-room_segmentation_client-1*.log
all processes on machine have died, roslaunch will exit

The code "room_boost_->predict" crashes.

When I set parameter room_segmentation_algorithm to 4 or 5 to run “room_segmentation_action_client" in ROS Kinetic, the program crashed and the server was restarted. The problems are described in #12 (comment).
When I looked for the cause of the problems, I found that all programs crashed with "room_boost_->predict". The version of my Opencv is 3.3.1. So, what happened to AdaBoost in OpenCV?

how to install ipa_building_msgs

I have an error about ipa_building_msgs
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "ipa_building_msgs"
with any of the following names:

ipa_building_msgsConfig.cmake
ipa_building_msgs-config.cmake

thank you!

Room segmentation crashes when using algorithm 5 (voronoi random field segmentation)

Here: ipa_room_segmentation/common/src/voronoi_random_field_segmentation.cpp:694

I tried several maps, and always got the same result.
Stacktrace:

#0  0x000055555579e1fa in VoronoiRandomFieldSegmentation::getAdaBoostFeatureVector(std::vector<double, std::allocator<double> >&, Clique&, std::vector<unsigned int, std::allocator<unsigned int> >&, std::vector<unsigned int, std::allocator<unsigned int> >&) (this=0x7fffd19da820, feature_vector=std::vector of length 35, capacity 35 = {...}, clique=..., given_labels=std::vector of length 2, capacity 2 = {...}, possible_labels=std::vector of length 3, capacity 3 = {...}) at /home/jorge/catkin_ws/thorp/src/ipa_coverage_planning/ipa_room_segmentation/common/src/voronoi_random_field_segmentation.cpp:694
#1  0x00005555557a2787 in VoronoiRandomFieldSegmentation::segmentMap(cv::Mat const&, cv::Mat&, int, int, int, std::vector<unsigned int, std::allocator<unsigned int> >&, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, double, double, double, double, std::vector<cv::Point_<int>, std::allocator<cv::Point_<int> > >*) (this=0x7fffd19da820, original_map=..., segmented_map=..., epsilon_for_neighborhood=5, max_iterations=150, min_neighborhood_size=4, possible_labels=std::vector of length 3, capacity 3 = {...}, min_node_distance=7, show_results=false, classifier_storage_path="room_segmentation/classifier_models/", classifier_default_path="/home/jorge/catkin_ws/thorp/src/ipa_coverage_planning/ipa_room_segmentation/common/files/classifier_models/", max_inference_iterations=9000, map_resolution_from_subscription=0.05000000074505806, room_area_factor_lower_limit=1.53, room_area_factor_upper_limit=1000000, max_area_for_merging=12.5, door_points=0x7fffffff7da0)
    at /home/jorge/catkin_ws/thorp/src/ipa_coverage_planning/ipa_room_segmentation/common/src/voronoi_random_field_segmentation.cpp:1454
#2  0x00005555556fc1df in RoomSegmentationServer::execute_segmentation_server(boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&) (this=0x7fffffff7d00, goal=...) at /home/jorge/catkin_ws/thorp/src/ipa_coverage_planning/ipa_room_segmentation/ros/src/room_segmentation_server.cpp:486
#3  0x0000555555749e79 in boost::_mfi::mf1<void, RoomSegmentationServer, boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&>::operator()(RoomSegmentationServer*, boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&) const (this=0x7fffffff80e0, p=0x7fffffff7d00, a1=...) at /usr/include/boost/bind/mem_fn_template.hpp:165
#4  0x0000555555746094 in boost::_bi::list2<boost::_bi::value<RoomSegmentationServer*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, RoomSegmentationServer, boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&>, boost::_bi::rrlist1<boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&> >(boost::_bi::type<void>, boost::_mfi::mf1<void, RoomSegmentationServer, boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&>&, boost::_bi::rrlist1<boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&>&, int) (this=0x7fffffff80f0, f=..., a=...) at /usr/include/boost/bind/bind.hpp:319
#5  0x0000555555740061 in boost::_bi::bind_t<void, boost::_mfi::mf1<void, RoomSegmentationServer, boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&>, boost::_bi::list2<boost::_bi::value<RoomSegmentationServer*>, boost::arg<1> > >::operator()<boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&>(boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&) (this=0x7fffffff80e0, a1=...) at /usr/include/boost/bind/bind.hpp:1306
#6  0x0000555555736475 in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, RoomSegmentationServer, boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&>, boost::_bi::list2<boost::_bi::value<RoomSegmentationServer*>, boost::arg<1> > >, void, boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&>::invoke(boost::detail::function::function_buffer&, boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&) (function_obj_ptr=..., a0=...)
    at /usr/include/boost/function/function_template.hpp:159
#7  0x000055555572dcee in boost::function1<void, boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&>::operator()(boost::shared_ptr<ipa_building_msgs::MapSegmentationGoal_<std::allocator<void> > const> const&) const (this=0x7fffffff80d8, a0=...) at /usr/include/boost/function/function_template.hpp:759
#8  0x0000555555720811 in actionlib::SimpleActionServer<ipa_building_msgs::MapSegmentationAction_<std::allocator<void> > >::executeLoop() (this=0x7fffffff7f20)
    at /opt/ros/melodic/include/actionlib/server/simple_action_server_imp.h:385
#9  0x000055555576628d in boost::_mfi::mf0<void, actionlib::SimpleActionServer<ipa_building_msgs::MapSegmentationAction_<std::allocator<void> > > >::operator()(actionlib::SimpleActionServer<ipa_building_msgs::MapSegmentationAction_<std::allocator<void> > >*) const (this=0x555556014d98, p=0x7fffffff7f20) at /usr/include/boost/bind/mem_fn_template.hpp:49
#10 0x00005555557645a3 in boost::_bi::list1<boost::_bi::value<actionlib::SimpleActionServer<ipa_building_msgs::MapSegmentationAction_<std::allocator<void> > >*> >::operator()<boost::_mfi::mf0<void, actionlib::SimpleActionServer<ipa_building_msgs::MapSegmentationAction_<std::allocator<void> > > >, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf0<void, actionlib::SimpleActionServer<ipa_building_msgs::MapSegmentationAction_<std::allocator<void> > > >&, boost::_bi::list0&, int) (this=0x555556014da8, f=..., a=...) at /usr/include/boost/bind/bind.hpp:259
#11 0x00005555557603c6 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, actionlib::SimpleActionServer<ipa_building_msgs::MapSegmentationAction_<std::allocator<void> > > >, boost::_bi::list1<boost::_bi::value<actionlib::SimpleActionServer<ipa_building_msgs::MapSegmentationAction_<std::allocator<void> > >*> > >::operator()() (this=0x555556014d98) at /usr/include/boost/bind/bind.hpp:1294
#12 0x000055555575bdca in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, actionlib::SimpleActionServer<ipa_building_msgs::MapSegmentationAction_<std::allocator<void> > > >, boost::_bi::list1<boost::_bi::value<actionlib::SimpleActionServer<ipa_building_msgs::MapSegmentationAction_<std::allocator<void> > >*> > > >::run() (this=0x555556014be0)
    at /usr/include/boost/thread/detail/thread.hpp:116
#13 0x00007ffff598abcd in  () at /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1
#14 0x00007ffff57616db in start_thread (arg=0x7fffd19dc700) at pthread_create.c:463
#15 0x00007ffff446688f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Some problems of covering paths on obstacle maps

Dear author, I'm having a problem overwriting paths on a map with static obstacles. As shown in the figure, when the Boustrophedon algorithm is used, the cell will be divided, and then the line between the cell and the cell will pass through the obstacle. I have tried to use the A star algorithm to deal with this connection, so as to achieve the obstacle avoidance effect, but there is still no change.Do you have any ideas?Thank you.
image

Errors complie this package on Melodic

Dear, I have downloaded the packages(melodic version) to install on Melodic, however, there are many dependencies that need to be installed, such as opengm, dlib. When I have installed these third-party dependencies , there are also many problems, such as :
catkin_package() CATKIN_DEPENDS on 'opengm', which has been found in
'/usr/local/lib/cmake/opengm/opengmConfig.cmake', but it is not a catkin
package
Is there are any guidlines to build the ipa_coverage_planning. Thanks for your help.

cannot catkin build package in melodic

I get CV related errors when I try to catkin build package in melodic:

error: ‘CV_DIST_L2’ was not declared in this scope
error: ‘CV_FILLED’ was not declared in this scope
error: ‘CV_RETR_CCOMP’ was not declared in this scope
.................................

Perhaps my openCV version is not compatible I'm not sure. I need to make sure what the problem is.

Trajectory starting point issue

Hi,

Even if I change the starting_position param to other values, trajectories are generated from the same starting point. I even hardcoded the start_pos variable in the room_exploration_action_client.cpp file but it didn't solve the issue. Is this a bug or am I using it incorrectly?

Regards,
Jaehyun

Transitioning goal to lost // wanting a cilent.launch as an example

Hello! Sir / Madam:
Thank you very much for providing such excellent code. I am very surprised by your path planning function.
And I successfully run the test in ipa_room_exploration , however, i find that there is a big difference between the method of writing the "cilent.launch" of the test case and that mentioned in readme. We tried to use your excellent algorithm to analyze our map, and finally ended in failure . Just got a message like "Transitioning goal to lost". And I don't know what “field_of_view” mean, even though they're described in RoomExploration.action .
20221003160250
(20221003160259)
I'm sorry that i use my mobile phone to take these photos , and I must admit that I am just a immature freshman but I have to say that our UAV team really needs your algorithm . So if you are willing, can you provide us with an ordinary cilent.launch for ROS Standard format map(.pgm), or can you point out my mistakes . I'm much obliged to you for helping me .

The path plan around the bend has a sort of zigzag pattern

Dear author, I used rviz to open a map, then conducted path planning, found a planned path with jagged problems,and many corners will appear this problem, as shown in the following figure. Is this the problem of the original map boundary not smooth? Or is the problem caused by the planning of the A* algorithm? How to solve this problem?I would appreciate it if you could answer my questions.
image

What version of OpenCV is used in room_segmentation_algorithm?

I have some problems executing room_segmentation_algorithm. The problems are described in #12 (comment). Is it related to the OpenCV version? In my running environment, the value of CV_MAJOR_VERSION is 3. Can this version of OpenCV run the algorithm successfully?
I found that the problem code is "room_boost_->predict(features_mat, cv::Mat(), cv::ml::Boost::RAW_OUTPUT);". When the code is executed, the program crashes.

use Concorde solver to solve the TSPs

Hellooooo,everyone!
when compling libconcorde_tsp_solver paceage,there is a warning that is "not find libqsopt",so I install the libqsopt by sudo apt-get install libqsopt-ex-dev,but the warning also appears,how should I deal with it ?
system is:
ubuntu:20.04 ros:noetic

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.