ipa320 / ipa_coverage_planning Goto Github PK
View Code? Open in Web Editor NEWAlgorithms for floor plan segmentation and systematic coverage driving patterns
Algorithms for floor plan segmentation and systematic coverage driving patterns
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 .
()
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 .
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
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.");
RLException: error loading tag:
file does not exist [/opt/ros/noetic/share/cob_default_env_config/envs/!!NO_ROBOT_ENV_SET!!/map.yaml]
XML is
The traceback for the exception was written to the log file
""""
this is the error iam getting when launching the mentioned command , what should i do ?
""""
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:
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?
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 ?
Hello,
I am trying to launch the package and I have few questions about it.
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!
Dear author, thanks for your work! Can this algorithm be integrated into ros move_base as a global path planner?
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
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.
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
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.
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.
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)
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
[ WARN] [1715306051.567011275]: Transitioning goal to LOST
Got a path with 0 nodes.
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/highgui/src/window.cpp, line 304
terminate called after throwing an instance of 'cv::Exception'
what(): /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/highgui/src/window.cpp:304: error: (-215) size.width>0 && size.height>0 in function imshow
[room_exploration/room_exploration_client-1] process has died [pid 68017, exit code -6, cmd /home/ros1ubuntu/catkin_ws/devel/lib/ipa_room_exploration/room_exploration_client __name:=room_exploration_client __log:=/home/ros1ubuntu/.ros/log/6fb2da8c-0cdd-11ef-be0a-000c29135610/room_exploration-room_exploration_client-1.log].
log file: /home/ros1ubuntu/.ros/log/6fb2da8c-0cdd-11ef-be0a-000c29135610/room_exploration-room_exploration_client-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
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.
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?
Hello, thank you for answering this question, I would like to ask how to add this to the move_base
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
At the boustrophedon.h, the accessible/visible center of the polygon was computed by using a meanshift algorithm.
But i can not find the relevant calculation methods or cited literature in the papers provided.
Can you tell me the relevant calculation methods or references?
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.
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.
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.