Comments (8)
To be simple, you misunderstood the parameters.
If you look inside the code and you will find some functions in <octomap_server.cpp>.
in function OctomapServer::insertCloudCallback
, author use function void OctomapServer::filterGroundPlane
to do the filter work.
The base idea is to find a plane which is vertical to the axis-Z in world cordinate. zmin zmax
are used to decide the inliers.
Enlarge the range between zmin~zmax
will put too many points into account, which affect the ratio of inliers to outliers.In this situation, the efficiency of RANSAC decrease and pcl::SACSegmentation
may not find the plane in 200 loops .
If your drone fly in different altitude, you should carefully modify your urdf file and activate your slam algorithm in the ground, so your drone can recognize the ground as z=0.After that,octomap_server should work properly.
Good luck!
from octomap_mapping.
That PCL error / warning appears when there can be no plane estimated, usually when there are to few or no points. Maybe the parameter sensor_model/max_range
is too low?
You could also try debugging with rqt_console, depending on the log level set you'll see exactly what octomap_server is doing.
from octomap_mapping.
Hi ! I'm having the same issue, with or without defining a sensor_model/max_range
For example I run:
rosrun octomap_server octomap_server_node cloud_in:=/pcl_xyz _occupancy_min_z:=-.85 _occupancy_max_z:=0.5 _filter_ground:=true _ground_filter/plane_distance:=0.8
which includes points belonging to the ground.
To get similar errors:
[INFO] [1497343346.217816837]: PCL segmentation did not find any plane. [ WARN] [1497343346.217868956]: No ground plane found in scan [ERROR] [1497343346.426143499]: Transform error for ground plane filter: "base_footprint" passed to lookupTransform argument target_frame does not exist. , quitting callback. You need to set the base_frame_id or disable filter_ground. ^C[pcl::SampleConsensusModelPlane::optimizeModelCoefficients] Not enough inliers found to support a model (0)! Returning the same coefficients. [pcl::SampleConsensusModelPlane::optimizeModelCoefficients] Not enough inliers found to support a model (0)! Returning the same coefficients. [pcl::SampleConsensusModelPlane::optimizeModelCoefficients] Not enough inliers found to support a model (0)! Returning the same coefficients.
The PointCloud2 I'm using as input for octomap_server is published by a Parrot SlamDunk ROS node, it has a reasonable amount of points, although I admit not that much belonging to the ground, and thus, enabling a successful plane detection.
from octomap_mapping.
If there are too few points for a reasonable ground plane fit then you should not use the ground filter.
However, I'm seeing a Transform error
in your log. Could it be that you're missing the proper base and base_footprint tf transforms?
from octomap_mapping.
Indeed ! I just tried it again, this time with proper parameters for octomap_server ~frame_id and ~base_frame_id (view_frames
pdf return here), getting the no ground plane found warning again.
Command-line messages:
[pcl::SampleConsensusModelPlane::optimizeModelCoefficients] Not enough inliers found to support a model (0)! Returning the same coefficients. [ INFO] [1497517506.648828231]: PCL segmentation did not find any plane. [ WARN] [1497517506.648858067]: No ground plane found in scan [pcl::SampleConsensusModelPlane::optimizeModelCoefficients] Not enough inliers found to support a model (0)! Returning the same coefficients.
Command-line command:
rosrun octomap_server octomap_server_node cloud_in:=/pcl_xyz _occupancy_min_z:=-1 _occupancy_max_z:=0.5 _frame_id:=/map _base_frame_id:=/cam0 _filter_ground:=true _ground_filter/plane_distance:=0.7
I have quite a lot of points in my PointCloud2 (.pcd example file here), though not on the ground, I don't know why my sensor doesn't detect much there...
Anyway, if I can't do anything with octomap_server parameters to force the ground filter to work I guess I'll just have to find another way to do it. Thanks for your answer ! 👍
from octomap_mapping.
I tried octomap output with my own pcl ground filter node. it works fine. So you can use it same way as well
from octomap_mapping.
Did anyone find a solution?
from octomap_mapping.
Did anyone find a solution to this ? Which parameter should i tweak in the ros node to solve this ?
Is it pointcloud_max_z
and pointcloud_min_z
? What range should I use.
I did not really understand the last answer
from octomap_mapping.
Related Issues (20)
- /free_cells_vis_array HOT 1
- octomap_saver_node report an error HOT 5
- Can not filter ground in foxy HOT 1
- Run multiple instances of Octomap Server in ROS HOT 1
- octomap for outdoors maps
- The constructed point cloud map is tilted
- octomap_full message update? HOT 3
- Load existing binary octree into octomap_server on launch HOT 1
- Facing this warning while running octomap server and nothing is beinig published on /occupied_cell_vis_array
- Warning : Nothing to publish, octree is empty HOT 11
- Problems with compilation(on Noetic-Ros) HOT 1
- Is it possible to have the map in the robot frame? HOT 1
- Octomap server node crashes in ROS 2 Rolling HOT 1
- ros2 launch octomap_server octomap_mapping.launch.xml failed HOT 3
- Running problem on arm board
- Reading a .bt or .ot file using the octomap_server_node not working properly HOT 1
- bug to fixed; field use error
- Can not load the .bt map in octomap_mapping.launch.xml
- unable to build in ros2 foxy
- How to use in ROS2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from octomap_mapping.