Git Product home page Git Product logo

octomap_mapping's Introduction

octomap_mapping CI

ROS stack for mapping with OctoMap, contains the octomap_server package.

The main branch for ROS1 Kinetic, Melodic, and Noetic is kinetic-devel.

The main branch for ROS2 Foxy and newer is ros2.

octomap_mapping's People

Contributors

ahornung avatar artivis avatar bkinman avatar danielmaier avatar felixendres avatar filipjares avatar hycwuy avatar jazzpi avatar jvgomez avatar lmark1 avatar lucasw avatar mikaelarguedas avatar mmurooka avatar mpowelson avatar wkentaro avatar wxmerkt avatar zhefan-xu 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

octomap_mapping's Issues

fullmap displaying in RVIZ #Question

I've created a custom node like the ColorOctree and I can publish the binary msg and display it on RVIZ.
But It looks like i can't visualize the map when set as full map. Does the full map publishes with colors and node variables? Is there an example on how the data from the node is parse out from the RVIZ plug-in.

I get three huge boxes which does correspond to the occupancy space like the binary map. Can the octree from the full map be visualize like the binary map but also be able to retrieve the node data information ?

/octomap_point_cloud_centers topic is not clear when there is a loop closure in rtabmap_ros

Dear people

I have a launch file that contains the following two packages, among others:

rtabmap.launch

octomap_server with cloud_in = /rtabmap/cloud_map

I do have a problem, when I run the rtabmap.launch and I plot the /octomap_point_cloud_centers in RVIZ.

The problem is that when the rtabmap finds a loop closure and corrects itself, the /octomap_point_cloud_centers topic do not clear.

How can I solve this issue?

Any help is appreciated, thank you

Any OctomapServer.cfg parameter doesn't work

Hi, I'm trying to get OccupancyGrid from PointCloud2 which is mapped from SLAM package.

I want to put the /cloud_registered topic (PointCloud2 data with fixed frame, this data mapped from SLAM) to cloud_in, and wanna get /projected_map (OccupancyGrid data).

When I execute roslaunch octomap_server octomap_mapping.launch,
스크린샷, 2022-03-11 23-34-34
I can see the map on the fixed frame with a circle.
But when I try to change any cfg parameters, it never works. Also, when I changed sensor maximum range as 0, it never works!!!! (I just got the same map)

I wonder why any cfg parameter doesn't work, and why projected_map is publishing always....

Installation problem for package "ros-noetic-octomap-server" on Debian 10

Summary

The installation of the Debian package "ros-noetic-octomap-server" fails on Debian 10 (buster), although according to ROS Noetic installation page Debian 10 is supported.

Required info

  • Operating System: Debian 10
  • ROS Version: noetic

Reason

ros-noetic-octomap-server depends on libpcl-*1.8, but Debian 10 only provides libpcl-*1.9, see Debian 10 packages webpage. Debian 9 has offered libpcl-*1.8 packages, see Debian 9 packages webpage.

Is it correct that the package depends on libpcl-*1.8 and libpcl-*1.9 at the same time (see package information below)?

Error message

$ sudo apt install ros-noetic-octomap-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
ros-noetic-octomap-server : Depends: libpcl-apps1.8 but it is not installable
Depends: libpcl-common1.8 but it is not installable
Depends: libpcl-features1.8 but it is not installable
Depends: libpcl-filters1.8 but it is not installable
Depends: libpcl-io1.8 but it is not installable
Depends: libpcl-kdtree1.8 but it is not installable
Depends: libpcl-keypoints1.8 but it is not installable
Depends: libpcl-ml1.8 but it is not installable
Depends: libpcl-octree1.8 but it is not installable
Depends: libpcl-outofcore1.8 but it is not installable
Depends: libpcl-people1.8 but it is not installable
Depends: libpcl-recognition1.8 but it is not installable
Depends: libpcl-registration1.8 but it is not installable
Depends: libpcl-sample-consensus1.8 but it is not installable
Depends: libpcl-search1.8 but it is not installable
Depends: libpcl-segmentation1.8 but it is not installable
Depends: libpcl-stereo1.8 but it is not installable
Depends: libpcl-surface1.8 but it is not installable
Depends: libpcl-tracking1.8 but it is not installable
Depends: libpcl-visualization1.8 but it is not installable
E: Unable to correct problems, you have held broken packages.

Package information:

$ apt-cache show ros-noetic-octomap-server
Package: ros-noetic-octomap-server
Version: 0.6.5-1buster.20201017.025706
Architecture: amd64
Maintainer: Wolfgang Merkt [email protected]
Installed-Size: 2284
Depends: libboost-atomic1.67.0, libboost-chrono1.67.0, libboost-date-time1.67.0, libboost-filesystem1.67.0, libboost-iostreams1.67.0, libboost-program-options1.67.0, libboost-regex1.67.0 (>= 1.67.0-10), libboost-serialization1.67.0, libboost-system1.67.0, libboost-thread1.67.0, libc6 (>= 2.14), libconsole-bridge0.4, libexpat1 (>= 2.0.1), libflann1.9, libfreetype6 (>= 2.2.1), libgcc1 (>= 1:3.0), libgl2ps1.4, libhdf5-openmpi-103 (>= 1.8.13), libjpeg62-turbo (>= 1.3.1), libjsoncpp1 (>= 1.7.4), liblog4cxx10v5, liblz4-1 (>= 0.0~r113), libnetcdf-c++4 (>= 4.2), libnetcdf13 (>= 3.6.1), libogg0 (>= 1.0rc3), libopenmpi3, libpcl-common1.9, libpcl-features1.9, libpcl-filters1.9, libpcl-io1.9, libpcl-kdtree1.9, libpcl-ml1.9, libpcl-octree1.9, libpcl-sample-consensus1.9, libpcl-search1.9, libpcl-segmentation1.9, libpcl-surface1.9, libpng16-16 (>= 1.6.2-1), libpocofoundation60, libproj13 (>= 4.8.0), libpython3.7 (>= 3.7.0), libqhull7, libsqlite3-0 (>= 3.5.9), libstdc++6 (>= 5.2), libsz2, libtheora0 (>= 1.0), libtiff5 (>= 4.0.3), libtinyxml2-6a (>= 5.0.0), libuuid1 (>= 2.16), libvtk7.1, libvtk7.1-qt, libxml2 (>= 2.6.27), ros-noetic-octomap, zlib1g (>= 1:1.1.4), libpcl-apps1.8, libpcl-common1.8, libpcl-features1.8, libpcl-filters1.8, libpcl-io1.8, libpcl-kdtree1.8, libpcl-keypoints1.8, libpcl-ml1.8, libpcl-octree1.8, libpcl-outofcore1.8, libpcl-people1.8, libpcl-recognition1.8, libpcl-registration1.8, libpcl-sample-consensus1.8, libpcl-search1.8, libpcl-segmentation1.8, libpcl-stereo1.8, libpcl-surface1.8, libpcl-tracking1.8, libpcl-visualization1.8, ros-noetic-dynamic-reconfigure, ros-noetic-nav-msgs, ros-noetic-nodelet, ros-noetic-octomap-msgs, ros-noetic-octomap-ros, ros-noetic-pcl-conversions, ros-noetic-pcl-ros, ros-noetic-roscpp, ros-noetic-sensor-msgs, ros-noetic-std-msgs, ros-noetic-std-srvs, ros-noetic-visualization-msgs
Homepage: http://www.ros.org/wiki/octomap_server
Priority: optional
Section: misc
Filename: pool/ros/r/ros-noetic-octomap-server/ros-noetic-octomap-server_0.6.5-1buster.20201017.025706_amd64.deb
Size: 346544
SHA256: 4d831bbcc1ceaaa83f7c8853a2af140d2b6442f505c423501b581187aa1faea2
SHA1: 336f93be5304b34235ba163016d3aa85c0a17a89
MD5sum: e11445a8c0bcd7924f410e2b83621dec
Description: octomap_server loads a 3D map (as Octree-based OctoMap) and distributes it to other nodes in a compact binary format.
It also allows to incrementally build 3D OctoMaps, and provides map saving in the node octomap_saver.
Description-md5: 4f44fb236321b686fc6abc0c3d293cab

process has died, exit code -11 Segmentation fault

Once I have used this great library octomap_mapping in hector_quadrotor with Velodyne VLP16 project to show Marker array on Rviz and it work perfectly.

But when i go to another project and need to apt full-upgrade, our hector_quadrotor project cann't work again.

We remove and reinstall ros and its dependencies after that hector_quadrotor project work again but octomap_mapping not.

When we use"roslaunch octomap_server octomap_mapping.launch" it say octomap_server: "process has died, exit code -11".

With gdb, we get more detail of error

Thread 1 "octomap_server_" received signal SIGSEGV, Segmentation fault

sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: No such file or directory

This is octomap_mapping.launch

`

	<!-- fixed map frame (set to 'map' if SLAM or localization running!) -->
	<param name="frame_id" type="string" value="world" />
	
	<!-- maximum range to integrate (speedup!) -->
	<param name="sensor_model/max_range" value="5.0" />
	
	<!-- data source to integrate (PointCloud2) -->
	<!-- <remap from="cloud_in" to="/narrow_stereo/points_filtered2" /> -->

</node>

`

(point cloud topic (sensor_msgs/PointCloud2) is already published on /cloud_in so we dont need to remap)

Our environment

  • Ubuntu 20
  • Ros noetic
  • PCL 1.10

I tried to search about "Segmentation fault" and it tend to be something wrong with PCL.

/reset service does not work

Hi
I am using octomap_server on ros Melodic and in my project I need to reset the /projected_map while mapping. But the /reset service does not work. I remember I had Kinetic before and did not have this problem but now that I am using Melodic, this service is not working. Is there any other way I can reset my map?

Increasing dimension of bounding box

I am using octomap server to explore a zone. The problem is that I am unable to modify the bounding box of the map. The points are passed in the map reference frame since I have done a package to do transform the point cloud from the robot frame to the map frame. For this reason, I think that the map is limited by the sensor/max_range parameter as it takes the origin as the position of the sensor even if the sensor is moving with the drone.
My questions are:

  • There is a way to modify the overall bounding box of the octomap from the launchfile?
  • Is correct to provide the point cloud in the map reference frame or the octomap automatically convert the reference frame of the points? In that case, is the senor/max_range parameter correct since in reality, the sensor is not in that position?

Thank you in advance for the information

octomap_server pointcloud_[min|max_z] and occupancy_[min|max]_z parameters only allow values up to -/+100

I have been trying to use the octomap_server to generate an OctoMap that goes up to +/- 120 from the map origin. Points outside the +/-100 range are excluded from the OctoMap, despite setting larger parameter values for pointcloud_[min|max]_z in the launch file.

My launch file looks like this.

<launch>
	<node pkg="octomap_server" type="octomap_server_node" name="octomap_server">
		<param name="resolution" value="0.1" />
		<!-- fixed map frame (set to 'map' if SLAM or localization running!) -->
		<param name="frame_id" type="string" value="/map" />
		<!-- maximum range to integrate (speedup!) -->
		<param name="sensor_model/max_range" value="30.0" />
		<param name="latch" value="false"/>
                 <param name="pointcloud_min_z" value="-200.0"/>
                 <param name="pointcloud_max_z" value="200.0"/>
		<!-- data source to integrate (PointCloud2) -->
		<remap from="cloud_in" to="/cloud" />
	</node>
	<node pkg="mapping" type="tf_broadcaster.py" name="tf_broadcaster" output="screen"></node>
        <node pkg="mapping" type="nav_publisher.py" name="nav_publisher" output="screen"></node>
</launch>

I can see that my launch file is correctly accessing the parameters, because if I instead set the pointcloud_[min|max]_z to have a magnitude less than -/+100 (e.g. -/+20), these values will be reflected in the terminal with,

~/catkin_ws$ rosparam get /octomap_server/pointcloud_min_z
-20.0
~/catkin_ws$ rosparam get /octomap_server/pointcloud_max_z
20.0

However, if the parameter is set to be greater than -/+100, it appears to be reset to -/+100. Is this the intended function? The package summary here suggests that the intended default value for these parameters are -/+ infinity.

Thanks!

not showing entire octomap

I'm working on a project where a UAV needs to map an entire outdoor environment. Running in gazebo, i've got rtabmap which creates a pointcloud, and its being converted to an octomap with octomap_server to have the ability to save it to a .bt file. The only problem is that when looking at the octomap that octomap_server creates, its not the entire pointcloud converted to an octomap but only a part.
image
my launchfile looks like this but I dont think that its got anything to do with that.
image
anybody any idea?

/free_cells_vis_array

Hi,

I have been trying to use my 3D Velodyne LiDAR data to construct an Octomap. By using NDT map matching, I am able to provide the /tf for octomap_mapping. In RViz, I am able to visualize the occupied cells by using the topic /occupied_cells_vis_array. I wish to visualize the free cells as well using the topic /free_cells_vis_array. However, I found that the "/free_cells_vis_array" is empty. May I seek some insight or advise on why /free_cells_vis_array is empty?

Thank you.

Change of max_range doesn't work

I am trying to figure out how the size of the octomap increases with bigger ranges. But when I change max_range (in the launch file) nothing changes in rviz and the octomaps are also not bigger. However when I ask with rosparam get the value is updated. Even when I set it to 0 it still shows the same mapping in rviz and saves the same octomap when I call the service to save it...

I would appreciate every help!

Can not filter ground in foxy

Hello,Could you tell me why not filtet the ground when I use launch the octomap_server.
environment:Ubuntu20.04
ROS's Version:foxy
launch file:

<!--
  Example launch file for octomap_server mapping:
  Listens to incoming PointCloud2 data and incrementally builds an octomap.
  The data is sent out in different representations.

  Copy this file into your workspace and adjust as needed, see
  www.ros.org/wiki/octomap_server for details
-->
<launch>
	<node pkg="octomap_server" exec="octomap_server_node" name="octomap_server">
		<param name="resolution" value="0.1" />

		<!-- fixed map frame (set to 'map' if SLAM or localization running!) -->
		<!-- <param name="frame_id" value="laser" /> -->
		<!-- <param name="frame_id" value="laser" /> -->
		<param name="frame_id" value="map" />
		<param name="base_frame_id" value="base_footprint" />

		<!-- maximum range to integrate (speedup!) -->
		<param name="sensor_model.max_range" value="5.0" />
		<param name="filter_ground" value="true" />
		<param name = "ground_filter/plane_distance"  value = "1" />
		<param name = "ground_filter/angle"  value = "1" />

		<param name = "filter_speckles"  value = "true" />


		<param name = "outrem_radius" value = "1.0" />
    	<param name = "outrem_neighbors"  value = "10" />

		<!-- data source to integrate (PointCloud2) -->
		<remap from="cloud_in" to="/PointCloud2" />
		<!-- <remap from="projection_map" to="/map" /> -->


	</node>
	<!-- <node pkg="joint_state_publisher" exec="joint_state_publisher" name="joint_state_publisher" />
    <node pkg="robot_state_publisher" exec="robot_state_publisher" name="robot_state_publisher" />
    <node pkg="tf2_ros" exec="static_transform_publisher" name="static_transform_publisher" args="0 0 0 0 0 0 /base_footprint /laser" /> -->

</launch>

Help with launch file

Hi all,

I think I am having some problem with the remapping as nothing is being published to the /occupied_cells_vis_array. I have my pointcloud2 being published to /velodyne_cloud_registered. The frame id of this message is /sensor_init_rot.

In the launch file for octomap_server, I have tried using different values for frame_id: odom_combined, map, sensor_init_rot. This is how it currently looks:

<launch>
    <node pkg="octomap_server" type="octomap_server_node" name="octomap_server">
        <param name="resolution" value="0.05" />

        <!-- fixed map frame (set to 'map' if SLAM or localization running!) -->
        <param name="frame_id" type="string" value="odom_combined" />

        <!-- maximum range to integrate (speedup!) -->
        <param name="sensor_model/max_range" value="100.0" />

        <!-- data source to integrate (PointCloud2) -->
        <remap from="cloud_in" to="/velodyne_cloud_registered" />

    </node>
</launch>

I can launch octomap_mapping.launch without any errors or warning. However, nothing is being published to /occupied_cells_vis_array.

Any help would be appreciated. Thanks!

octreemap real-time

I was building an octree while using laser slam, and found that it takes longer and longer to build the octree as the map expands. Is there any good way to solve it?This time is as follows:
Map publishing in OctomapServer took 0.020862 sec;"1";"/octomap_server";"1597992232.199627943";"/free_cells_vis_arrayMap publishing in OctomapServer took 0.036827 sec;"1";"/octomap_server";"1597992233.032756327";"/free_cells_vis_array
Map publishing in OctomapServer took 0.063853 sec;"1";"/octomap_server";"1597992237.275289141";"/free_cells_vis_array
Map publishing in OctomapServer took 0.181036 sec;"1";"/octomap_server";"1597992248.256273682";"/free_cells_vis_array
Map publishing in OctomapServer took 3.695490 sec;"1";"/octomap_server";"1597992391.960885345";"/free_cells_vis_array
............
Map publishing in OctomapServer took 2.681625 sec;"1";"/octomap_server";"1597992454.992732211";"/free_cells_vis_array
Map publishing in OctomapServer took 2.649209 sec;"1";"/octomap_server";"1597992461.193299952";"/free_cells_vis_array
Map publishing in OctomapServer took 2.096347 sec;"1";"/octomap_server";"1597992464.053245663";"/free_cells_vis_array

After downloading the octomap_mapping file to the catkin_ws / src file directory, I get the following error when I make catkin_make in the catkin_ws file directory. Can you help me?

-- +++ processing catkin package: 'octomap_server'
-- ==> add_subdirectory(octomap_mapping-kinetic-devel/octomap_server)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Could NOT find octomap_ros (missing: octomap_ros_DIR)
-- Could not find the required component 'octomap_ros'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "octomap_ros" with
any of the following names:

octomap_rosConfig.cmake
octomap_ros-config.cmake

Add the installation prefix of "octomap_ros" to CMAKE_PREFIX_PATH or set
"octomap_ros_DIR" to a directory containing one of the above files. If
"octomap_ros" provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
octomap_mapping-kinetic-devel/octomap_server/CMakeLists.txt:20 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/cansel/catkin_wss/build/CMakeFiles/CMakeOutput.log".
See also "/home/cansel/catkin_wss/build/CMakeFiles/CMakeError.log".
Makefile:8972: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed

Octomap Server SIGTERM

When Octomap Server is busy, if we kill the launchfile or the proccess pressing 'Ctrl+c', the server doesn't answer and it escalates to SIGTERM after a while.

when OccupancyMap in Rviz, corrupted size vs. prev_size in fastbins and core dumped

Hi,
Firtly, i constructed octomap as .bt file. Then, i load .bt map file with octomap_server_node. This is Ok.
then, i start rviz. After, i add OcuppancyMap which come from rviz plugin. After i select Octomap Binary Topic as /octomap_binary. when i do this, rviz closed and this message observed in terminal:

corrupted size vs. prev_size in fastbins
Aborted (core dumped)

How i visualise octomap .bt file in Rviz?
Thanks.

Running custom tf node crashing octomap_server node

Hi! I am running a UAV simulator package. I am trying to use the octomap_server launch file to generate a map from available pointCloud data. I have remapped the nodes as required. However publishing transforms through a custom node tfNode.cpp results in the octomap server crashing with error

[octomap_talker-1] process has died [pid 22595, exit code -11, cmd /opt/ros/kinetic/lib/octomap_server/octomap_tracking_server_node cloud_in:=flytsim/velodyne/point_cloud __name:=octomap_talker __log:=/root/.ros/log/a5836ec4-01e9-11e9-8dbb-0242ac130002/octomap_talker-1.log]. log file: /root/.ros/log/a5836ec4-01e9-11e9-8dbb-0242ac130002/octomap_talker-1*.log

Is there any additional information needed? How can I tackle this issue?

Is ROS Kinetic supported yet?

I don't see octomap_mapping or octomap_server packages in ros-kinetic. Is Kinetic supported yet? These are the only packages that is preventing us to move on to Kinetic :(. It's especially bad because if we want to downgrade to Jade then we also have to downgrade OS to Ubuntu 14.04 because Ubuntu 15 support expires in few month.

Is there anyway to use mapping and server packages on Kinetic?

Thanks!

Hi, points queue? issue

Hi, I'm trying to mapping with LIVOX-MID-70 LiDAR.

In my case, firstly, points are stacked few moments and then, stacking is stop.
I edited .launch file in world frame as camera_init, and point cloud's topics to.

any solutions?

Release for ROS Melodic Morenia

Will octomap_server (and octomap_ros) be released (packaged and available in repo) for ROS Melodic?

I've tested the melodic-devel branch by adding the packages to a catkin workspace and it worked flawlessly as far as our usecase goes (Gazebo simulation, Kinect for mapping and planning robot motion based on current octomap state).

License?

Dear contributors, would you consider to specify a license for this project? Thanks!

From GitHub Help:

However, without a license, the default copyright laws apply, meaning that you retain all rights to your source code and no one may reproduce, distribute, or create derivative works from your work. If you're creating an open source project, we strongly encourage you to include an open source license. The Open Source Guide provides additional guidance on choosing the correct license for your project.

Octomap_saver not saving the map

Hello, I'm using octomap package in Kinetic distro in combination with the gmapping package in order to perform 2D SLAM and build a 2D map and also a 3D map with Octomap. Both are working fine, the 3D map is being created correctly in rviz but when I try to save it i get this error:

Request to /octomap_full failed; trying again...

In order to save it I'm using the command:

rosrun octomap_server octomap_saver -f name_of_map.bt

or

rosrun octomap_server octomap_saver -f name_of_map.ot

I get the same errors with the two different extensions. Any idea of what could be wrong here?

Thanks.

Andrés

Error when trying to build octomap_mapping from source (Windows 10)

Description

I want to use the octomap_mapping package to visualize a point cloud created with an Intel-Realsense D455 camera as a 3D occupancy grid mapping in RViz. I encounter an error when I try to create octomap_mapping from the source code.

My environment

  • ROS Distro: Melodic
  • OS Version: Windows 10
  • Visual Studio Community 2019 (2) - 16.11.8
  • Desktop Development with C++
  • Windows 10 SDK (10.0.19041.0)

Steps to reproduce

First I created a workspace (C:\octomap_ws) and cloned the source code with Git into (C:\octomap_ws\src). I cloned the source code from the kinetic-devel branch as described in the instructions for the ROS Distro Melodic. I then run catkin_make in C:\octomap_ws. I come across an error that says: Could NOT find octomap_ros (missing: octomap_ros_DIR).
As described in the CMakeLists of octomap_server, it is necessary to have the octomap_ros package. So I cloned it from [Github octomap_ros] (https://github.com/OctoMap/octomap_ros) to my C:\octomap_ws\src folder. I ran catkin_make and the previously described error disappeared. However, I am now encountering this new error:

99

Does anybody have an idea how to solve this problem and to build the source code without errors?

Problem with ground filter

Hi,

Context

I am using octomap with my quadcopter with three small stereo cameras in an exploration mission where the elevation of the ground is unknown but can vary by sometimes a maximum of 2meters over the course of the entire flight. We use the 2D projected map to do our path planning and we would like to have the ground marked as free space in the projection map. Our problem is that when we put occupancy_min_z too high we clear only the space very close to us. However if we put the occupancy_min_z too low, tend to have the ground marked as an obstacle.

Problem

Our idea was to enable ground filtering to clear unknown space into free space faster.

However, when we run the octomap_server, we get multiple PCL errors:

[pcl::SampleConsensusModelPlane::optimizeModelCoefficients] Not enough inliers found to support a model (0)! Returning the same coefficients.

Here is the launch file we are using:

<node pkg="octomap_server" type="octomap_server_node" name="octomap_server">
    <param name="resolution" value="0.2" />

    <!-- fixed map frame (set to 'map' if SLAM or localization running!) -->
    <param name="frame_id" type="string" value="$(arg frame_id)" />
    <param name="base_frame_id" type="string" value="$(arg base_frame_id)" />

    <!-- maximum range to integrate (speedup!) -->
    <param name="sensor_model/max_range" value="3.0" />

    <!-- data source to integrate (PointCloud2), we modified octomap to support 3 point cloud inputs-->
    <remap from="cloud_in"  to="$(arg points1)" />
    <remap from="cloud_in2" to="$(arg points2)" />
    <remap from="cloud_in3" to="$(arg points4)" />
    <param name="filter_ground" type="bool" value="true" />
    <param name="filter_speckles" type="bool" value="true" />
    <param name="ground_filter/distance" type="double" value="0.2" />
    <param name="ground_filter/plane_distance" type="double" value="0.2" />
    <param name="pointcloud_min_z" type="double" value="-2.0" />
    <param name="pointcloud_max_z" type="double" value="4.0" />
    <param name="occupancy_min_z" type="double" value="1.0" />
    <param name="occupancy_max_z" type="double" value="2.5" />
</node>

The error happens when octomap_server is doing ground plane filtering. It occurs only when the filter_ground parameter is enabled.

Questions

We have two questions:

  • What is causing this PCL filter problem?
  • Are we doing this the right way or is the ground filtering unnecessary?

Thanks!

Noise accumulated with 2D map

Hello, I am currently using octomap ros pkg to generate a 2d projected map.

I was able to see my 2d map with rviz. For y-axis, if y >0, it keeps building noise point cloud into the map and doesn't clear it or update at all, while it is not the case if y < 0.

3

Could someone help please. I really appreciate it.

problem in filtering pointcloud

Hello.
In OctomapServer.cpp, line 318 to 323, the pass_x, pass_y and pass_z has filtered the point cloud. However, later in line 334 to 339, the filter worked again.
I think maybe this is a bug? Should the filter action only be done in base frame but not in world frame?

How to integrate into existing package?

I am currently working with this workspace https://github.com/mSimon12/multiple_quadrotors and I am trying to track the changes in the octomap and therefore would like to use your packages. However, I am not able to connect the two packages.

When I try to start the any of the octomap_server launch files it tells me "Nothing to publish, octree is empty" even though I can see the octomap in rviz, can save the octree, use its services....

Am I missing something?

Thanks!

How to integrate .ply file from cartographer to octomap_mapping

Hi, I have point cloud in .ply format from Cartographer and I want to use this for generating the Octomap in Rviz using this octomap_mapping. Is it possible to do so or do I have to use separate viewer for generating octomap or writing a separate node to read the .ply file and then publish as pointcloud2 type can also be an option?

Dynamic reconfigure in server

Hi, before doing the job I prefer to ask, just in case:

  • Is there any reason why the octomap_server only has the max_depth parameter in the dynamic reconfigure server and not other parameters, such as those for cloud filtering or ground segmentation?

In case there is no inconvenient, I suggest it as an enhancement. I would most probably do it by myself in that case.

octomap_saver_node report an error

Hi,I'm trying to use the octomap_saver_node to save a map,but report an error as follows:

environment:Ubuntu20.04
ROS's Version:foxy
Question 1:

ros2 run  octomap_server octomap_saver_node
[INFO] [1652079216.465871727] [octomap_saver]: Map received (0 nodes, 0.020000 m res), saving to 
terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::substr: __pos (which is 18446744073709551613) > this->size() (which is 0
)

Question 2: The octree map will move with the movement of the robot, can you tell me how to solve it? thank you very much

note:The transform include the odom->base_link and have no map.

Point clouds assembled in map raytrace from origin

It is likely I am not using your software as intended, but if not this is a legitimate issue. I use laser_assembler to assemble point clouds from the laser source into the map frame. Then I am trying to run an octomap server to take the clouds in and also make the octomap in the map frame. Because the cloud is already transformed to map, your code

insertScan(sensorToWorldTf.getOrigin(), pc_ground, pc_nonground);

thinks sensorToWorldTf.getOrigin() is 0,0,0,0

This results in raytracing each hit in the point cloud from 0,0,0 in the map frame instead of from the actual origin of the scan.

I have to assemble the scans into a fixed frame, but when I do the location of the actual scan isn't used in your insertScan function anymore. How is this problem typically solved?

Nothing to publish, octree is empty

I am a publishing a PointCloud (Type: sensor_msgs/PointCloud2) in topic pc_pub. I have remapped "cloud_in" topic to the according pointcloud topic and the fixed frame in the launch file corresponds to the fixed frame in rviz (map) . Running ran "rostopic echo pc_pub" verifies that the pointcloud is indeed being published to this topic and octomap_server is Subscribing into the topic too. However, "Nothing to publish, octree is empty" appears.
What could the problem be?

	<!-- fixed map frame (set to 'map' if SLAM or localization running!) -->
	<param name="frame_id" type="string" value="map" />
	
	<!-- maximum range to integrate (speedup!) -->
	<param name="sensor_model/max_range" value="100.0" />
	
	<!-- data source to integrate (PointCloud2) -->
	<remap from="cloud_in" to="/pc_pub" />

</node>

Rolling Window

Say i want to only maintain a octomap in a certain window in the world frame. This window moves around, along with say a robot.

How can this be implemented easily? I say this because the algorithm slows down as the map becomes bigger, and it is needless to retain parts of the map that are far from the robot.

Thank you

Performance issue

Hello, I am doing some experiments using octomap, and something strange occur on performance.

When I use the default octomap version along with ROS melodic (Ubuntu 18.04), I get the debug log like this:

Pointcloud insertion in OctomapServer done (0+307200 pts (ground/nonground), 0.564149 sec)

But when I use the version compiled with github kinetic-devel, it is much slower and I get the debug log like this:

Pointcloud insertion in OctomapServer done (0+307200 pts (ground/nonground), 6.756059 sec)

Any idea what would cause this difference? Many thanks!

Changes found in empty space

Hello,

I have been experimenting with the octomap tracking server and I encounter a weird problem. After mapping the environment and run the tracking server, I get a pointcloud that includes empty areas above the robot, like in the attached screenshot. (mapped area in white and unoccupied changes in red)

image

Any ideas why?

Can OctoMap unoccupy?

Does OctoMap work with dynamic objects at all? Say if I want to grasp an object and move it, will the OctoMap reflect the change? So far I have been playing with sensor model but I cannot seem to make the OctoMap forget the original position of the object.

Unable to launch any package

I'm new to the whole ros environment, did the tutorial and i need to understand how octomap works.
To do so i wanted to test your project.
I created a new workspace.

cd src
git clone https://github.com/OctoMap/octomap_mapping.git
cd ..
catkin_make
source devel/setup.bash

From there everything went fine, it compiled without a problem.
Then I wanted to launch a file but i got : [octomap_mapping] is not a launch file name The traceback for the exception was written to the log file

Could you help me with this ?

No ground plane found in scan

Hello,

I am using ros kinetic and am actually trying to do mapping with octomap but I can't understand properly what this error mean.
It only prompt when i set ground_filter to true.

[pcl::SampleConsensusModelPlane::optimizeModelCoefficients] Not enough inliers found to support a model (0)! Returning the same coefficients.
[ INFO] [1621410313.723860512]: PCL segmentation did not find any plane.
[ WARN] [1621410313.723899495]: No ground plane found in scan

I have no idea where it could be coming from. My odometry seems right, i can map using my lasers.

here is my launch file :

<?xml version="1.0"?>

<launch>
    <!-- Depth Image -> Pointcloud -->
    <node pkg="nodelet" type="nodelet" args="manager" name="depth_image_nodelet_manager" output="screen"/>
    <node pkg="nodelet" type="nodelet" name="pepper_pointcloud" args="load depth_image_proc/point_cloud_xyz depth_image_nodelet_manager --no-bond">
      <remap from="camera_info" to="/naoqi_driver/camera/depth/camera_info"/>
      <remap from="image_rect" to="/naoqi_driver/camera/depth/image_raw"/>
    </node>

    <!-- Octomap server  -->
	<node name="octomap_server" pkg="octomap_server" type="octomap_server_node" output="screen">
    <remap from="cloud_in" to="points" />
    <param name="frame_id" type="string" value="/odom"/>
    <param name="base_frame_id" type="string" value="/base_link" />
    <param name="height_map" type="bool" value="true"/>
    <param name="sensor_model/max_range" value="-1"/>
    <param name="sensor_model/hit" value="0.7" />
    <param name="sensor_model/miss" value="0.4" />
    <param name="sensor_model/min" value="0.12" />
    <param name="sensor_model/max" value="0.97" />
    <param name="latch" value="false" />
    <param name="filter_ground" value="true" />
    <param name="resolution" value="0.05" />
    <param name="occupancy_max_z" value="1.6" />
	</node> 

    <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen" >
      <remap from="/scan" to="/naoqi_driver/laser"/> 
      <param name="map_update_interval" value="2" />
      <param name="linearUpdate" value="0.01" />
      <param name="angularUpdate" value="0.01" />
      <param name="temporalUpdate" value="0.5" />
      <param name="xmin" value="-10." />
      <param name="ymin" value="-10." />
      <param name="xmax" value="10." />
      <param name="ymax" value="10." />
      <param name="particles" value="300" />
      <param name="maxRange" value="2.5" />
      <param name="maxUrange" value="2.0" />
      <param name="delta" value="0.02" />
    </node>

  <node pkg="move_base" type="move_base" respawn="false" name="move_base_node" output="screen">
    <rosparam file="$(find navigation)/nav_config/move_base_params.yaml" command="load" />
    <rosparam file="$(find navigation)/nav_config/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find navigation)/nav_config/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find navigation)/nav_config/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find navigation)/nav_config/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find navigation)/nav_config/dwa_local_planner_params.yaml" command="load" />
    <rosparam file="$(find navigation)/nav_config/navfn_global_planner_params.yaml" command="load" />
  </node>

	<node pkg="rviz" type="rviz" name="rviz" args="-d $(find navigation)/rviz_config/octo_config.rviz">
	</node>

<node pkg="rostopic" type="rostopic" name="arbitrary_name" args="pub -1 /joint_angles naoqi_bridge_msgs/JointAnglesWithSpeed -- '[1, now, Head]' '[HeadPitch]' '[-0.2]' 0.05 0" output="screen"/>

</launch>

how to convert the coloroctree to octree

Hi, when I use the fcl library, I want to convert the coloroctree to octree, but I do not find any method. I have tried the following way, but it did not make any difference.
octomap::ColorOcTree* octree = new octomap::ColorOcTree(0.1);
octomap::OcTree* octree1 = dynamic_castoctomap::OcTree*(octree);
Could you help me solve this question?
Thanks! :)

Problem remapping topic using nodelet octomap_server

I originally posted a question on ROS Answers, but I've done some more experimenting and I think this is specific to the nodelet implementation of octomap server.

I cannot get a pointcloud topic in the same nodelet manager to remap to the input of the octomap server nodelet.

For example, neither of these lines work:
<remap from="~cloud_in" to="depth/points" />
or
<remap from="octomap_server_nodelet/cloud_in" to="depth/points" />

When I use the same style of remapping for a PCL nodelet (for example) they work fine and the data is passed through the nodelet manager. So the point cloud source and the nodelet manager are working, which makes me think that this is a problem with the nodelet implementation in octomap. Unfortunately I'm not familiar enough with ROS nodelets to be able to work out the fix.

Has anyone else got a successful octomap nodelet running?

Update Octomap in realtime using octomap_rviz_plugin

Hi,
This is a question why my octomap_server is overlaying the several octomaps created.
My hunch is that I am missing the right frame_id or some tf from SLAM. The SLAM algorithm is LOAM which have two frames: camera ; camera_init. From this, I wrote the following launch file:
<launch> <node pkg="octomap_server" type="octomap_server_node" name="octomap_server"> <param name="resolution" value="0.05" /> <!-- fixed map frame (set to 'map' if SLAM or localization running!) --> <param name="frame_id" value="camera_init" /> <param name="base_frame_id" value="camera" /> <!-- maximum range to integrate (speedup!) --> <param name="sensor_model/max_range" value="130.0" /> <param name="latch" value="false" /> <param name="filter_speckles" value="true" /> <param name="pointcloud_min_z" value="-0.6" /> <param name="pointcloud_max_z" value="0.5" /> <param name="occupancy_min_z" value="-0.5" /> <param name="occupancy_max_z" value="2.5" /> <!-- data source to integrate (PointCloud2) --> <remap from="cloud_in" to="/velodyne_cloud_registered" /> </node> </launch>

What am I doing wrong?
Thanks,
Bruno

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.