Closed JerryMelv closed 1 year ago
If you have crashes during compilation, maybe you are filling your RAM. Try with export MAKEFLAGS="-j1"
.
Thank you, it works then this happen... When i go to the directory the available files there is landmarkdetection.msg not hpp is there anything i can do about this?
If you have crashes during compilation, maybe you are filling your RAM. Try with
export MAKEFLAGS="-j1"
.
The file is generated, and should appear in install directory of your ros2 workspace:
ls ~/ros2_ws/install/rtabmap_msgs/include/rtabmap_msgs/msg
...
-rw-r--r-- 1 mathieu mathieu 521 May 11 19:41 landmark_detection.h
-rw-r--r-- 1 mathieu mathieu 471 May 11 19:41 landmark_detection.hpp
-rw-r--r-- 1 mathieu mathieu 528 May 11 19:41 landmark_detections.h
-rw-r--r-- 1 mathieu mathieu 477 May 11 19:41 landmark_detections.hpp
...
rtabmap_msgs
has been updated 3 weeks ago to include this new message, for some reason your colcon build didn't regenerate to messages. I double checked and rtabmap_slam
is depending on rtabmap_msgs
, so there should not be race condition when building (e.g., messages are generated after rtabmap_slam
build).
Make sure you source again ~/ros2_ws/install/setup.bash
to have the generated messages include paths.
Hello,
So I tried by myself to build it without the rtabmap_slam inside the rtabmap_ros inside the source. In other words I remove the rtabmap_slam folder to home where it will not be build alongside other rtabmap folders. When i colcon build it once again it works and then when i tried to run ros2 launch rtabmap_launch rtabmap.launch.py
and changed the default topic of rgbd from the launch file to the one that is published by ros2 launch realsense2_camera rs_launch.py
and is already connected to the rtabmap topics as you can see in the rqt graph below.
As you can see in the rqt graph the topics are all connected from one another? So i assume that is all I needed to connect between Realsense2_camera with rtabmap. And when i check rtabmap_viz it shows nothing.
Do you see warnings in the terminal about topics not received for the past 5 seconds? In rqt_graph, the topics are there, but I don't see realsense node.
try doing ros2 topic hz ...
on the 3 topics that rtabmap is connected to see if they are published.
Yeah I did see the warning and I do not know why there is no realsense node (this may be i did not install the correct package)
Here is the terminator that i use to check for the hz of the topic.
Thank you, it works then this happen... When i go to the directory the available files there is landmarkdetection.msg not hpp is there anything i can do about this?
If you have crashes during compilation, maybe you are filling your RAM. Try with
export MAKEFLAGS="-j1"
.
I also have this exact same issue compiling in ROS2 foxy. I do see the files under install folder but cannot get to successfully build it, unless I do COLCON_IGNORE under rtabmap_slam folder in rtabmap-ros folder ! Do have 16 GB RAM and do not see any terminal crashes.
Switching branch to foxy-devel fixed my issue.
@anath93 for the landmark_detection.hpp
not found, I could not reproduce the error with latest ros2 branch. Make sure your workspace is cleaned, that rtabmap binaries are not installed and rebuild.
@JerryMelv I reproduce your issue. With the topics you are using, you need to set approx_sync
to true. However, you will then get another error saying that the depth resolution is not compatible with rgb resolution. You should start realsense driver with align depth parameter to true (in that case you don't need to set approx_sync
):
ros2 launch realsense2_camera rs_launch.py align_depth.enable:=true
ros2 launch rtabmap_launch rtabmap.launch.py \
args:="-d" \
rgb_topic:=/camera/color/image_raw \
depth_topic:=/camera/aligned_depth_to_color/image_raw \
camera_info_topic:=/camera/color/camera_info \
frame_id:=camera_link
With D435i, if you want to use visual odometry, I strongly recommend to use the IR-Depth or Stereo IR version:
ros2 launch realsense2_camera rs_launch.py \
enable_color:=false \
enable_infra1:=true \
enable_infra2:=true \
enable_accel:=true \
enable_gyro:=true \
unite_imu_method:=1
# disable IR emitter:
ros2 service call /camera/camera/set_parameters \
rcl_interfaces/srv/SetParameters \
"{parameters: [{name: depth_module.emitter_enabled, value: {type: 2, integer_value: 0}}]}"
# Filter imu messages:
ros2 run imu_filter_madgwick imu_filter_madgwick_node --ros-args \
--remap imu/data_raw:=/camera/imu \
--param use_mag:=false \
--param publish_tf:=false
# camera_imu_optical_frame is missing, publish it:
ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 camera_gyro_optical_frame camera_imu_optical_frame
# To use rtabmap in stereo IR mode:
ros2 launch rtabmap_launch rtabmap.launch.py \
args:="-d" \
stereo:=true \
left_image_topic:=/camera/infra1/image_rect_raw \
left_camera_info_topic:=/camera/infra1/camera_info \
right_image_topic:=/camera/infra2/image_rect_raw \
right_camera_info_topic:=/camera/infra2/camera_info \
frame_id:=camera_link \
wait_imu_to_init:=true
# To use rtabmap in depth IR mode:
ros2 launch rtabmap_launch rtabmap.launch.py \
args:="-d" \
rgb_topic:=/camera/infra1/image_rect_raw \
depth_topic:=/camera/depth/image_rect_raw \
camera_info_topic:=/camera/infra1/camera_info \
frame_id:=camera_link \
wait_imu_to_init:=true
cheers, Mathieu
Hello Mathieu,
I am currently using RealSense L515 camera so I tried running this code, and then when i tried moving it, the message "IMU received doesn't have orientation, set it is ignored." and then the rtabmap freezes. Then sometimes when it freeze this error occured.
ros2 launch realsense2_camera rs_launch.py align_depth.enable:=true
ros2 launch rtabmap_launch rtabmap.launch.py \
args:="-d" \
rgb_topic:=/camera/color/image_raw \
depth_topic:=/camera/aligned_depth_to_color/image_raw \
camera_info_topic:=/camera/color/camera_info \
frame_id:=camera_link
@anath93 for the
landmark_detection.hpp
not found, I could not reproduce the error with latest ros2 branch. Make sure your workspace is cleaned, that rtabmap binaries are not installed and rebuild.@JerryMelv I reproduce your issue. With the topics you are using, you need to set
approx_sync
to true. However, you will then get another error saying that the depth resolution is not compatible with rgb resolution. You should start realsense driver with align depth parameter to true (in that case you don't need to setapprox_sync
):ros2 launch realsense2_camera rs_launch.py align_depth.enable:=true ros2 launch rtabmap_launch rtabmap.launch.py \ args:="-d" \ rgb_topic:=/camera/color/image_raw \ depth_topic:=/camera/aligned_depth_to_color/image_raw \ camera_info_topic:=/camera/color/camera_info \ frame_id:=camera_link
With D435i, if you want to use visual odometry, I strongly recommend to use the IR-Depth or Stereo IR version:
ros2 launch realsense2_camera rs_launch.py \ enable_color:=false \ enable_infra1:=true \ enable_infra2:=true \ enable_accel:=true \ enable_gyro:=true \ unite_imu_method:=1 # disable IR emitter: ros2 service call /camera/camera/set_parameters \ rcl_interfaces/srv/SetParameters \ "{parameters: [{name: depth_module.emitter_enabled, value: {type: 2, integer_value: 0}}]}" # Filter imu messages: ros2 run imu_filter_madgwick imu_filter_madgwick_node --ros-args \ --remap imu/data_raw:=/camera/imu \ --param use_mag:=false \ --param publish_tf:=false # camera_imu_optical_frame is missing, publish it: ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 camera_gyro_optical_frame camera_imu_optical_frame # To use rtabmap in stereo IR mode: ros2 launch rtabmap_launch rtabmap.launch.py \ args:="-d" \ stereo:=true \ left_image_topic:=/camera/infra1/image_rect_raw \ left_camera_info_topic:=/camera/infra1/camera_info \ right_image_topic:=/camera/infra2/image_rect_raw \ right_camera_info_topic:=/camera/infra2/camera_info \ frame_id:=camera_link \ wait_imu_to_init:=true # To use rtabmap in depth IR mode: ros2 launch rtabmap_launch rtabmap.launch.py \ args:="-d" \ rgb_topic:=/camera/infra1/image_rect_raw \ depth_topic:=/camera/depth/image_rect_raw \ camera_info_topic:=/camera/infra1/camera_info \ frame_id:=camera_link \ wait_imu_to_init:=true
cheers, Mathieu
@matlabbe thank you for replying back, I had tried those steps before raising that question, like made sure the binaries were removed and build, log and install folders were removed for a fresh build but the outcome twice was same so switched the branch for now to foxy-devel and the build went through. I will try it again soon other day.
@JerryMelv If you launch with IMU, you should use an IMU filter node to compute the quaternion before feeding it to rtabmap. For the process has died error, you may need to launch the node with gdb, see this post for ros2.
As you are using a L515, here another example with IMU:
ros2 launch realsense2_camera rs_launch.py \
align_depth.enable:=true \
enable_accel:=true \
enable_gyro:=true \
unite_imu_method:=1
ros2 run imu_filter_madgwick imu_filter_madgwick_node --ros-args \
--remap /imu/data_raw:=/camera/imu \
--param use_mag:=false \
--param publish_tf:=false
ros2 launch rtabmap_launch rtabmap.launch.py \
args:="-d" \
rgb_topic:=/camera/color/image_raw \
depth_topic:=/camera/aligned_depth_to_color/image_raw \
camera_info_topic:=/camera/color/camera_info \
frame_id:=camera_link \
wait_imu_to_init:=true \
imu_topic:="/imu/data"
ros2 launch rtabmap_launch rtabmap.launch.py \ args:="-d" \ rgb_topic:=/camera/color/image_raw \ depth_topic:=/camera/aligned_depth_to_color/image_raw \ camera_info_topic:=/camera/color/camera_info \ frame_id:=camera_link \ wait_imu_to_init:=true \ imu_topic:="/imu/data"
Thank you @matlabbe for replying,
I did i have launched just as you told me to launch and the red error for no orientation set did go away but there is another error that happens when launching all of that launch file, the error happens when mapping and it stopped the whole mapping process.
What is the firmware installed on your camera, which realsense sdk versions is used? The depth aspect ratio is different than the RGB aspect ratio, which could mean the depth image is not registered to rgb camera, thus rtabmap won't process it.
Thank you for responding
I am currently using realsense sdk from Intel Realsense https://github.com/IntelRealSense/realsense-ros.
And also the config that I used is from realsense-viewer max range config (maybe that might be the reason?)
Does align_depth.enable:=
true not help?
If align_depth.enable:=true
, the depth image should have the same resolution than the RGB image.
does that mean that the aspect ratio of both parts is still not the same despite having the same resolution?
In your log from this post, rgbd_odometry is complaining that RBG is 1200x720 (1.6666) and depth is 640x480 (1.33333), they don't have same resolution or same aspect ratio. If you should have same resolution for RGB and depth, the wrong topics are connected to rgbd_odometry.
In your log from this post, rgbd_odometry is complaining that RBG is 1200x720 (1.6666) and depth is 640x480 (1.33333), they don't have same resolution or same aspect ratio. If you should have same resolution for RGB and depth, the wrong topics are connected to rgbd_odometry.
What should I do to fix this problem?
Check why the aligned depth topic doesn't have same resolution than RGB image, then debug realsense driver to know why.
I am currently using the config max range from realsense SDK for rs_launch.py. Should i remove it and check whether it works or not? i fear that the max range config from SDK has the resolution capped ad 640x480.
Not aware of all realsense options, but rtabmap won't work if the input images are not the same resolution or same aspect ratio.
Hi Mathieu,
I wanted to port over my final question from Forum as I did not see you respond there yet, if you want I can delete and post this on ROS forum or create my new question topic. Hope to hear back on this.
I did go through FLOAM after your post and you are right it do not support 128 rings. So that leaves me at least in this configuration for robustness (robot localization (wheels + imu + icp_odom) to compute for odom and RGB from Zed2i for loop closures with April tags integration. That brings me to me to this launch file and ekf parameters, does this configuration makes sense ? Or Am I still missing something ?
"" ros__parameters: frequency: 50.0 two_d_mode: true publish_tf: true use_control: false
map_frame: map
odom_frame: odom
base_link_frame: base_link
world_frame: odom
transform_time_offset: 0.0
sensor_timeout: 0.1
#x , y , z,
#roll , pitch , yaw,
#vx , vy , vz,
#vroll , vpitch, vyaw,
#ax , ay , az
odom0: /odom
odom0_config: [false, false, false,
false, false, false,
true, true, false,
false, false, true,
false, false, false]
imu0: /zed2i/zed_node/imu/data
imu0_remove_gravitational_acceleration: true
imu0_queue_size: 2
imu0_config: [false, false, false,
false, false, false,
false, false, false,
false, false, true,
true, false, false]
odom1: /odom_icp
odom1_config: [true, true, false,
false, false, true,
false, false, false,
false, false, false,
false, false, false]
""" ""Launch file
from launch import LaunchDescription from launch.actions import DeclareLaunchArgument, SetEnvironmentVariable from launch.substitutions import LaunchConfiguration from launch.conditions import IfCondition, UnlessCondition from launch_ros.actions import Node
def generate_launch_description():
use_sim_time = LaunchConfiguration('use_sim_time')
deskewing = LaunchConfiguration('deskewing')
return LaunchDescription([
# Launch arguments
DeclareLaunchArgument(
'use_sim_time', default_value='false',
description='Use simulation (Gazebo) clock if true'),
DeclareLaunchArgument(
'deskewing', default_value='true',
description='Enable lidar deskewing'),
# Compute quaternion of the IMU
Node(
package='imu_filter_madgwick', executable='imu_filter_madgwick_node', output='screen',
parameters=[{'use_mag': False,
'world_frame':'enu',
'publish_tf':False}],
remappings=[
('imu/data_raw', '/zed2i/zed_node/imu/data')
('imu/data', '/zed2i/zed_node/imu/data/filtered')
]),
Node(
package='rtabmap_odom', executable='icp_odometry', output='screen',
parameters=[{
'frame_id':'base_link',
'odom_frame_id':'odom',
'wait_for_transform':0.2,
'expected_update_rate':15.0,
'deskewing':deskewing,
'use_sim_time':use_sim_time,
'deskewing_slerp':False,
}],
remappings=[
('scan_cloud', '/lidar_points1')
('odom','/odom_icp')
],
arguments=[
'Icp/PointToPlane', 'true',
'Icp/Iterations', '10',
'Icp/VoxelSize', '0.1',
'Icp/Epsilon', '0.001',
'Icp/PointToPlaneK', '20',
'Icp/PointToPlaneRadius', '0',
'Icp/MaxTranslation', '2',
'Icp/MaxCorrespondenceDistance', '1',
'Icp/Strategy', '1',
'Icp/OutlierRatio', '0.7',
'Icp/CorrespondenceRatio', '0.01',
'Odom/ScanKeyFrameThr', '0.4',
'OdomF2M/ScanSubtractRadius', '0.1',
'OdomF2M/ScanMaxSize', '15000',
'OdomF2M/BundleAdjustment', 'false',
]),
Node(
package='rtabmap_slam', executable='rtabmap', output='screen',
parameters=[{
'frame_id':'base_link',
'subscribe_depth':False,
'subscribe_rgb':True,
'subscribe_scan_cloud':True,
'approx_sync':True,
'wait_for_transform':0.2,
'use_sim_time':use_sim_time,
}],
remappings=[
('scan_cloud', 'assembled_cloud')
('rgb/image', '/zed2i/zed_node/rgb/image_rect_color')
('rgb/camera_info', '/zed2i/zed_node/rgb/camera_info')
('imu', '/zed2i/zed_node/imu/data/filtered')
],
arguments=[
'-d', # This will delete the previous database (~/.ros/rtabmap.db)
'RGBD/ProximityMaxGraphDepth', '0',
'RGBD/ProximityPathMaxNeighbors', '1',
'RGBD/AngularUpdate', '0.05',
'RGBD/LinearUpdate', '0.05',
'RGBD/CreateOccupancyGrid', 'false',
'Mem/NotLinkedNodesKept', 'false',
'Mem/STMSize', '30',
'Mem/LaserScanNormalK', '20',
'Reg/Strategy', '1',
'Icp/VoxelSize', '0.1',
'Icp/PointToPlaneK', '20',
'Icp/PointToPlaneRadius', '0',
'Icp/PointToPlane', 'true',
'Icp/Iterations', '10',
'Icp/Epsilon', '0.001',
'Icp/MaxTranslation', '3',
'Icp/MaxCorrespondenceDistance', '1',
'Icp/Strategy', '1',
'Icp/OutlierRatio', '0.7',
'Icp/CorrespondenceRatio', '0.2',
]),
Node(
package='rtabmap_viz', executable='rtabmap_viz', output='screen',
parameters=[{
'frame_id':'base_link',
'odom_frame_id':'odom',
'subscribe_odom_info':True,
'subscribe_scan_cloud':True,
'approx_sync':False,
'use_sim_time':use_sim_time,
}],
remappings=[
('scan_cloud', 'odom_filtered_input_scan')
]),
Node(
package='rtabmap_util', executable='point_cloud_assembler', output='screen',
parameters=[{
'max_clouds':10,
'fixed_frame_id':'',
'use_sim_time':use_sim_time,
}],
remappings=[
('cloud', 'odom_filtered_input_scan')
]),
]) ""
Do I need add anything else apart from April tags Node and tf relation for better loop closures ? Also is there any documentation or previous references for integration with Nav2 stack and localization using AMCL side to use the map above with integration of Rtabmap ? What would your thoughts be in the environment for localization using Rtabmap vs AMCL ? Also for 2d occupancy grid map creation do I need to subscribe to depth topic and make this to true ? ('RGBD/CreateOccupancyGrid', 'false',)
Hi Mathieu,
Thank you again.
This is latest error on building package on ros2 branch with foxy distro, warning for AprilTags which I have already installed and also made sure common interfaces package is upto date.
@anath93 The apriltag warning jut tells that cmake cannot find apriltag_msgs, so apriltag callbacks won't be available.
For the LandmarkDetection error, this is unrelated to apriltag, it is a new message added in rtabmap_msgs. It seems that rtabmap_msgs didn't get rebuilt correctly. I would try clearing the build and install directory in your ros2 workspace and rebuild.
For your previous post, I cannot help for ekf, as it is another package and I never used it under ros2. For integration with nav2, see those launch files: https://github.com/introlab/rtabmap_ros/tree/ros2/rtabmap_demos/launch
The parameter RGBD/CreateOccupancyGrid
is true by default under ros package. If you subscribe to a depth image or laser scan, a grid will be created. AMCL and rtabmap have totally different localization approaches.
@matlabbe , thank you for your reply. I tried cleaning the workspace and building it but still the error remains the same. I did install the Apriltag pakage from source and the prior warning went away. Also want to add that I am on Foxy distro.
Is there any downside of using binary files apart for my use case of using ICP odometry, 3d mapping filling holes using 3d LIDAR + Stereo ?
The rtabmap_ros binaries can do the same than building it from source.
For the LandmarkDetection undefined reference, I am not able to reproduce the issue. CI works correctly: https://github.com/introlab/rtabmap_ros/actions/runs/5301046020/jobs/9595020518
Thank you for your reply.
@anath93 for the
landmark_detection.hpp
not found, I could not reproduce the error with latest ros2 branch. Make sure your workspace is cleaned, that rtabmap binaries are not installed and rebuild.@JerryMelv I reproduce your issue. With the topics you are using, you need to set
approx_sync
to true. However, you will then get another error saying that the depth resolution is not compatible with rgb resolution. You should start realsense driver with align depth parameter to true (in that case you don't need to setapprox_sync
):ros2 launch realsense2_camera rs_launch.py align_depth.enable:=true ros2 launch rtabmap_launch rtabmap.launch.py \ args:="-d" \ rgb_topic:=/camera/color/image_raw \ depth_topic:=/camera/aligned_depth_to_color/image_raw \ camera_info_topic:=/camera/color/camera_info \ frame_id:=camera_link
With D435i, if you want to use visual odometry, I strongly recommend to use the IR-Depth or Stereo IR version:
ros2 launch realsense2_camera rs_launch.py \ enable_color:=false \ enable_infra1:=true \ enable_infra2:=true \ enable_accel:=true \ enable_gyro:=true \ unite_imu_method:=1 # disable IR emitter: ros2 service call /camera/camera/set_parameters \ rcl_interfaces/srv/SetParameters \ "{parameters: [{name: depth_module.emitter_enabled, value: {type: 2, integer_value: 0}}]}" # Filter imu messages: ros2 run imu_filter_madgwick imu_filter_madgwick_node --ros-args \ --remap imu/data_raw:=/camera/imu \ --param use_mag:=false \ --param publish_tf:=false # camera_imu_optical_frame is missing, publish it: ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 camera_gyro_optical_frame camera_imu_optical_frame # To use rtabmap in stereo IR mode: ros2 launch rtabmap_launch rtabmap.launch.py \ args:="-d" \ stereo:=true \ left_image_topic:=/camera/infra1/image_rect_raw \ left_camera_info_topic:=/camera/infra1/camera_info \ right_image_topic:=/camera/infra2/image_rect_raw \ right_camera_info_topic:=/camera/infra2/camera_info \ frame_id:=camera_link \ wait_imu_to_init:=true # To use rtabmap in depth IR mode: ros2 launch rtabmap_launch rtabmap.launch.py \ args:="-d" \ rgb_topic:=/camera/infra1/image_rect_raw \ depth_topic:=/camera/depth/image_rect_raw \ camera_info_topic:=/camera/infra1/camera_info \ frame_id:=camera_link \ wait_imu_to_init:=true
cheers, Mathieu
Hi @matlabbe
I have a new problem occur. When I ran this code for L515, RTAB-Map did open but the 3D map just displays the depth map and does not save the previous images. So when i move the camera elsewhere the previous path/images will go black in 3D map.
Thank you in advance for the reply
Do you have warnings on terminal?
Do you have warnings on terminal?
Hello @matlabbe
Thank you for replying. There is no warning on terminal but there is this that came out.
Can you see logs about "rtabmap" node? If only rgbd_odometry and rtabmap_viz are running, you will only see the current odometry point cloud in rtabmap_viz, not the map cloud.
Can you see logs about "rtabmap" node? If only rgbd_odometry and rtabmap_viz are running, you will only see the current odometry point cloud in rtabmap_viz, not the map cloud.
Hello @matlabbe
how can I see the logs about rtabmap node?
In the terminal, we see [rgbd_odometry-1]
and [rtabmap_viz-3]
, but there is no [rtabmap]
, is rtabmap
node dead? rtabmap
should show at least an info log each 1 second when it is running.
Hello @matlabbe
Thank you for responding. No there is no rtabmap
and when i checked rosgraph only rgbd odometry and rtabmap viz that shows up.
I just found out that rtabmap died immediately as I started launching
These were the output before ^
Hello @matlabbe
Thank you for responding. No there is no
rtabmap
and when i checked rosgraph only rgbd odometry and rtabmap viz that shows up.I just found out that rtabmap died immediately as I started launching
These were the output before ^
I tried by rebuilding the src folder and it worked. Further difficulties will be ask in this issue.
I'll close this issue as it has diverged from the original question. Open new issue to keep it specific.
Hey everyone, I hope all of you have a great day. I'm having an issue here that whenever I colcon build the workspace after a certain time the terminal and terminator will crash. I am currently using ROS2 Humble where RTAB-Map will be utilized with KinectV1.