Code Monkey home page Code Monkey logo

Comments (9)

carlosmccosta avatar carlosmccosta commented on July 30, 2024

Hello,

In the log it shows pcl 1.8.
For compiling drl you need to compile my fork of pcl first, which is based on pcl 1.11.1
After compiling and sourcing the catkin setup.bash, when you do roscd pcl, it should go to the source folder of my pcl fork.

Check the install instructions here:
https://github.com/carlosmccosta/dynamic_robot_localization#installation-from-source

Have a nice day :)

from dynamic_robot_localization.

SU1997 avatar SU1997 commented on July 30, 2024

Hello,

In the log it shows pcl 1.8.
For compiling drl you need to compile my fork of pcl first, which is based on pcl 1.11.1
After compiling and sourcing the catkin setup.bash, when you do roscd pcl, it should go to the source folder of my pcl fork.

Check the install instructions here:
https://github.com/carlosmccosta/dynamic_robot_localization#installation-from-source

Have a nice day :)

hi sorry to trouble you again,i finished the compile problem.and when i used the commend:
roslaunch ethzasl_kinect_dataset_high_complexity_slow_fly_movement.launch
something error happend:
[ERROR] [1625708402.569137124, 1298112281.916861620]: Reference point cloud topic or file for localization system must be provided!
[ WARN] [1625708402.634751421, 1298112281.916861620]: No transform between frames map_ground_truth_corrected and base_link available after 1298112281.916862 seconds of waiting. This warning only prints once.
[ WARN] [1625708402.648442547, 1298112281.916861620]: No transform between frames map and base_link available after 1298112281.916862 seconds of waiting. This warning only prints once.
[ WARN] [1625708402.659599306, 1298112281.916861620]: No transform between frames map_drl and base_link available after 1298112281.916862 seconds of waiting. This warning only prints once.
[ WARN] [1625708402.664855349, 1298112281.916861620]: No transform between frames odom and base_link available after 1298112281.916862 seconds of waiting. This warning only prints once.

i have downloaded the ethzasl_kinect_dataset and put it in correct DIR
thanks:)

from dynamic_robot_localization.

carlosmccosta avatar carlosmccosta commented on July 30, 2024

Hello,

When I run:

roslaunch dynamic_robot_localization_tests ethzasl_kinect_dataset_high_complexity_slow_fly_movement.launch

And after a few seconds press space for triggering the rosbag play, the drl system performs like this video:
https://www.youtube.com/watch?v=UslDiUkm7wE

The ethzasl bags can be downloaded from:
http://www.files.ethz.ch/asl/ethzasl_kinect_dataset.tar.bz2

And the .bag files (such as 0high-0slow-0fly-0_2011-02-19-11-44-41.bag) should be extracted and placed inside this folder:

dynamic_robot_localization_tests/datasets/asl/ethzasl_kinect_dataset/

The map file high-complexity-environment_icp-point-point_0.0025-voxel-grid_mls_0.005-rosbag-speed.ply should be inside folder dynamic_robot_localization_tests/maps/asl/ethzasl_kinect_dataset/

Have a nice day,

from dynamic_robot_localization.

SU1997 avatar SU1997 commented on July 30, 2024

Hello,

When I run:

roslaunch dynamic_robot_localization_tests ethzasl_kinect_dataset_high_complexity_slow_fly_movement.launch

And after a few seconds press space for triggering the rosbag play, the drl system performs like this video:
https://www.youtube.com/watch?v=UslDiUkm7wE

The ethzasl bags can be downloaded from:
http://www.files.ethz.ch/asl/ethzasl_kinect_dataset.tar.bz2

And the .bag files (such as 0high-0slow-0fly-0_2011-02-19-11-44-41.bag) should be extracted and placed inside this folder:

dynamic_robot_localization_tests/datasets/asl/ethzasl_kinect_dataset/

The map file high-complexity-environment_icp-point-point_0.0025-voxel-grid_mls_0.005-rosbag-speed.ply should be inside folder dynamic_robot_localization_tests/maps/asl/ethzasl_kinect_dataset/

Have a nice day,

hi carlos
i think i found the reason
i found that after used the function:
bool Localization<PointT>::s_applyCloudFilters(std::vector< typename CloudFilter<PointT>::Ptr >& cloud_filters, typename pcl::PointCloud<PointT>::Ptr& pointcloud, int minimum_number_of_points_in_ambient_pointcloud)
the size of pointcloud turned to zero, it may be the reason of my problem,what can i do to fix it?

from dynamic_robot_localization.

carlosmccosta avatar carlosmccosta commented on July 30, 2024

Hello,

That is strange.
In my laptop it is working as expected (the s_applyCloudFilters does not reduce the point cloud to zero points).

Are you running Ubuntu 20.04 and ROS Noetic with all the latest updates installed ?

Do you have the git repositories with these branches checked out ?

wstool info
workspace: /home/carloscosta/catkin_ws_drl/src

 Localname                  S SCM Version (Spec)     UID  (Spec)  URI  (Spec) [http(s)://...]
 ---------                  - --- --------------     -----------  ---------------------------
 pose_to_tf_publisher         git melodic-devel  (-) 5484c247216b github.com/carlosmccosta/pose_to_tf_publisher.git
 perception_pcl               git melodic-devel  (-) bd21be2cb8ec github.com/ros-perception/perception_pcl.git
 pcl_msgs                     git noetic-devel  (-)  ddcc8e14729f github.com/ros-perception/pcl_msgs.git
 pcl                          git master-all-pr  (-) e28ae1b6b813 github.com/carlosmccosta/pcl.git
 mesh_to_pointcloud           git master  (-)        8fbdaedfbe99 github.com/carlosmccosta/mesh_to_pointcloud.git
 laserscan_to_pointcloud      git master  (-)        31ab4f966202 github.com/carlosmccosta/laserscan_to_pointcloud.git
 dynamic_robot_localization   git noetic-devel  (-)  f786f18f7820 github.com/carlosmccosta/dynamic_robot_localization.git

You can also change the ros_verbosity_level to DEBUG for trying to identify which filter is causing the issue.
https://github.com/carlosmccosta/dynamic_robot_localization/blob/noetic-devel/launch/dynamic_robot_localization_system.launch#L25

Keep in mind that you need to wait around 10 seconds after starting roslaunch dynamic_robot_localization_tests ethzasl_kinect_dataset_high_complexity_slow_fly_movement.launch for letting the system perform the setup. Then you can press the space key in the terminal to trigger the rosbag play.

Have a nice day,

from dynamic_robot_localization.

SU1997 avatar SU1997 commented on July 30, 2024

Hello,

That is strange.
In my laptop it is working as expected (the s_applyCloudFilters does not reduce the point cloud to zero points).

Are you running Ubuntu 20.04 and ROS Noetic with all the latest updates installed ?

Do you have the git repositories with these branches checked out ?

wstool info
workspace: /home/carloscosta/catkin_ws_drl/src

 Localname                  S SCM Version (Spec)     UID  (Spec)  URI  (Spec) [http(s)://...]
 ---------                  - --- --------------     -----------  ---------------------------
 pose_to_tf_publisher         git melodic-devel  (-) 5484c247216b github.com/carlosmccosta/pose_to_tf_publisher.git
 perception_pcl               git melodic-devel  (-) bd21be2cb8ec github.com/ros-perception/perception_pcl.git
 pcl_msgs                     git noetic-devel  (-)  ddcc8e14729f github.com/ros-perception/pcl_msgs.git
 pcl                          git master-all-pr  (-) e28ae1b6b813 github.com/carlosmccosta/pcl.git
 mesh_to_pointcloud           git master  (-)        8fbdaedfbe99 github.com/carlosmccosta/mesh_to_pointcloud.git
 laserscan_to_pointcloud      git master  (-)        31ab4f966202 github.com/carlosmccosta/laserscan_to_pointcloud.git
 dynamic_robot_localization   git noetic-devel  (-)  f786f18f7820 github.com/carlosmccosta/dynamic_robot_localization.git

You can also change the ros_verbosity_level to DEBUG for trying to identify which filter is causing the issue.
https://github.com/carlosmccosta/dynamic_robot_localization/blob/noetic-devel/launch/dynamic_robot_localization_system.launch#L25

Keep in mind that you need to wait around 10 seconds after starting roslaunch dynamic_robot_localization_tests ethzasl_kinect_dataset_high_complexity_slow_fly_movement.launch for letting the system perform the setup. Then you can press the space key in the terminal to trigger the rosbag play.

Have a nice day,

hi thank you for your help
there is a new problem:
[pcl::IterativeClosestPoint::computeTransformation] Not enough correspondences found. Relax your threshold parameters.
where can i change the parameters in the source code to fix it?

from dynamic_robot_localization.

SU1997 avatar SU1997 commented on July 30, 2024

Peek 2021-07-12 17-11
and this is the rviz shown

from dynamic_robot_localization.

carlosmccosta avatar carlosmccosta commented on July 30, 2024

Hello,

From the gif you seem to have modified the filters.
They are important to control the level of detail of the point cloud for allowing realtime 6 DoF pose.
For using the full kinect point cloud you would need a very powerful cpu.

For reference, I have an Intel i7-6700HQ, and drl runs well with the configurations that are in the dynamic_robot_localization_tests git.

Below is what the parameter server is supposed to have for configuring the drl pipeline, for allowing you to achieve the results shown in this video:
https://www.youtube.com/watch?v=UslDiUkm7wE

Which was also confirmed by other users with different hardware:
#2 (comment)

Have a nice day,

rosparam get / -p
dynamic_robot_localization:
  drl_localization_node:
    filters:
      ambient_pointcloud:
        1_voxel_grid:
          downsample_all_data: true
          filter_limit_field_name: z
          filter_limit_max: 5.0
          filter_limit_min: -5.0
          filtered_cloud_publish_topic: 
          leaf_size_x: 0.02
          leaf_size_y: 0.02
          leaf_size_z: 0.02
          save_leaf_layout: false
        4_crop_box:
          box_max_x: 1.15
          box_max_y: 1.15
          box_max_z: 2.15
          box_min_x: -1.15
          box_min_y: -1.15
          box_min_z: 0.8
          box_rotation_pitch: 0.0
          box_rotation_roll: 0.0
          box_rotation_yaw: 0.0
          box_translation_x: 0.0
          box_translation_y: 0.0
          box_translation_z: 0.0
          filtered_cloud_publish_topic: 
          invert_selection: false
        5_random_sample:
          filtered_cloud_publish_topic: 
          invert_sampling: false
          number_of_random_samples: 425
      ambient_pointcloud_map_frame:
        4_crop_box:
          box_max_x: 3.5
          box_max_y: 1.0
          box_max_z: 1.5
          box_min_x: 1.5
          box_min_y: -2.0
          box_min_z: -0.2
          box_rotation_pitch: 0.0
          box_rotation_roll: 0.0
          box_rotation_yaw: 0.0
          box_translation_x: 0.0
          box_translation_y: 0.0
          box_translation_z: 0.0
          filtered_cloud_publish_topic: ambient_pointcloud_filtered
          invert_selection: false
      reference_pointcloud:
        1_voxel_grid:
          downsample_all_data: true
          filter_limit_field_name: z
          filter_limit_max: 5.0
          filter_limit_min: -5.0
          filtered_cloud_publish_topic: 
          leaf_size_x: 0.02
          leaf_size_y: 0.02
          leaf_size_z: 0.02
          save_leaf_layout: false
    frame_ids:
      base_link_frame_id: base_link
      map_frame_id: map
      odom_frame_id: odom
      sensor_frame_id: openni_rgb_optical_frame
    initial_pose:
      orientation_rpy:
        pitch: 0.591
        roll: 0.035
        yaw: -0.151
      position:
        x: 1.325
        y: -0.728
        z: 1.633
      robot_initial_pose_available: true
      robot_initial_pose_in_base_to_map: false
    initial_pose_estimators_matchers:
      feature_matchers:
        reference_pointcloud_descriptors_filename: 
        reference_pointcloud_descriptors_save_filename: 
    keypoint_detectors:
      reference_pointcloud:
        reference_pointcloud_keypoints_filename: 
        reference_pointcloud_keypoints_save_filename: 
    localization_point_type: PointXYZRGBNormal
    message_management:
      tf_timeout: 0.1
    outlier_detectors:
      euclidean_outlier_detector:
        aligned_pointcloud_inliers_publish_topic: aligned_pointcloud_inliers
        aligned_pointcloud_outliers_publish_topic: aligned_pointcloud_outliers
        max_inliers_distance: 0.05
    pcl_verbosity_level: ERROR
    publish_topic_names:
      pose_stamped_publish_topic: localization_pose
      pose_with_covariance_stamped_publish_topic: localization_pose_with_covariance
    reference_pointclouds:
      reference_pointcloud_available: true
      reference_pointcloud_filename: /home/carloscosta/catkin_ws_drl/src/dynamic_robot_localization_tests/maps/asl/ethzasl_kinect_dataset/high-complexity-environment_icp-point-point_0.0025-voxel-grid_mls_0.005-rosbag-speed.ply
      reference_pointcloud_preprocessed_save_filename: 
      reference_pointcloud_type: 3D
      reference_pointcloud_update_mode: NoIntegration
      use_incremental_map_update: false
    ros_verbosity_level: INFO
    subscribe_topic_names:
      ambient_pointcloud_topic: /camera/depth/points2
      ambient_pointcloud_topic_disabled_on_startup: false
      pose_stamped_topic: initial_pose_stamped
      pose_topic: initial_pose
      pose_with_covariance_stamped_topic: /initialpose
      reference_costmap_topic: 
      reference_pointcloud_topic: reference_pointcloud_update
    tracking_matchers:
      correspondence_estimation_approach: CorrespondenceEstimation
      correspondence_estimation_lookup_table:
        map_cell_resolution: 0.02
        map_initialize_lookup_table_using_euclidean_distance_transform: false
        map_margin_x: 1.0
        map_margin_y: 1.0
        map_margin_z: 1.0
        sensor_cell_resolution: 0.02
        sensor_initialize_lookup_table_using_euclidean_distance_transform: false
        sensor_margin_x: 1.0
        sensor_margin_y: 1.0
        sensor_margin_z: 1.0
      ignore_height_corrections: false
      point_matchers:
        iterative_closest_point:
          convergence_time_limit_seconds: 3.3
          correspondence_randomness: 50
          display_cloud_aligment: false
          euclidean_fitness_epsilon: 1.0e-06
          line_search_step_size: 0.1
          match_only_keypoints: false
          max_correspondence_distance: 2.5
          max_number_of_ransac_iterations: 0
          max_number_of_registration_iterations: 200
          maximum_number_of_displayed_correspondences: 0
          maximum_optimizer_iterations: 100
          outlier_ratio: 0.25
          ransac_outlier_rejection_threshold: 0.03
          rotation_epsilon: 0.002
          transformation_epsilon: 1.0e-06
          use_reciprocal_correspondences: false
          voxel_grid_resolution: 1.0
      use_internal_tracking: true
    tracking_recovery_matchers:
      point_matchers:
        iterative_closest_point_with_normals:
          convergence_time_limit_seconds: 0.35
          display_cloud_aligment: false
          euclidean_fitness_epsilon: 1.0e-06
          match_only_keypoints: false
          max_correspondence_distance: 5.0
          max_number_of_ransac_iterations: 75
          max_number_of_registration_iterations: 350
          maximum_number_of_displayed_correspondences: 0
          ransac_outlier_rejection_threshold: 0.07
          transformation_epsilon: 1.0e-06
          use_reciprocal_correspondences: false
    transformation_validators:
      euclidean_transformation_validator:
        max_new_pose_diff_angle: 1.57
        max_new_pose_diff_distance: 1.3
        max_outliers_percentage: 0.65
        max_root_mean_square_error: 0.05
        max_transformation_angle: 0.4
        max_transformation_distance: 0.13
    transformation_validators_tracking_recovery:
      euclidean_transformation_validator:
        max_new_pose_diff_angle: 1.04
        max_new_pose_diff_distance: 0.8
        max_outliers_percentage: 0.66
        max_root_mean_square_error: 0.07
        max_transformation_angle: 0.7
        max_transformation_distance: 0.7
  pose_to_tf_publisher_node_13CMCC37_47860_150206484506227970:
    base_link_frame_id: base_link
    discard_older_poses: true
    float_topic: 
    float_update_field: 
    float_update_field_orientation_in_degrees: false
    initial_pitch: 0.591
    initial_pose_in_base_to_map: false
    initial_roll: 0.035
    initial_x: 1.325
    initial_y: -0.728
    initial_yaw: -0.151
    initial_z: 1.633
    invert_tf_hierarchy: true
    invert_tf_transform: true
    map_frame_id: map
    odom_frame_id: odom
    odometry_topic: 
    pose_stamped_topic: localization_pose
    pose_with_covariance_stamped_topic: /initialpose
    poses_filename: 
    publish_initial_pose: true
    publish_last_pose_tf_timeout_seconds: -3.0
    publish_rate: -10.0
    tf_lookup_timeout: 1.5
    tf_time_offset: 0.0
    transform_pose_to_map_frame_id: true
    transform_tf_message_source: 
    transform_tf_message_target: 
  rlt_robot_localization_error:
    base_link_frame_id: base_link
    base_link_ground_truth_frame_id: base_link
    ground_truth_poses_output_filename: 
    ground_truth_poses_publisher_topic: groundtruth_poses
    invert_tf_from_map_ground_truth_frame_id: false
    localization_poses_output_filename: 
    localization_poses_publisher_topic: localization_poses
    map_frame_id: map
    map_ground_truth_frame_id: map_ground_truth_corrected
    map_odom_only_frame_id: map_odom_only
    odom_frame_id: odom
    odom_only_poses_output_filename: 
    odometry_poses_publisher_topic: odometry_poses
    pose_error_odometry_publish_topic: odometry_error
    pose_error_publish_topic: localization_error
    pose_publishers_sampling_rate: -1
    pose_stamped_topic: localization_pose
    pose_stamped_with_covariance_pose_topic: 
    publish_rate: -1.0
    save_poses_orientation_quaternion: true
    save_poses_orientation_vector: true
    save_poses_timestamp: true
    tf_lookup_timeout: 0.2
    use_6_dof: true
    use_degrees_in_angles: true
    use_millimeters_in_distances: true
    use_time_0_when_querying_tf: false
hector_trajectory_server:
  source_frame_name: base_link
  target_frame_name: map
  trajectory_publish_rate: 10
  trajectory_update_rate: 30
hector_trajectory_server_drl:
  source_frame_name: base_link
  target_frame_name: map_drl
  trajectory_publish_rate: 10
  trajectory_update_rate: 30
hector_trajectory_server_gt:
  source_frame_name: base_link
  target_frame_name: map_ground_truth_corrected
  trajectory_publish_rate: 10
  trajectory_update_rate: 30
hector_trajectory_server_odom:
  source_frame_name: base_link
  target_frame_name: odom
  trajectory_publish_rate: 10
  trajectory_update_rate: 30
map_odom_only:
  pose_to_tf_publisher_node_13CMCC37_47860_7820265933940169555:
    base_link_frame_id: base_link
    discard_older_poses: true
    float_topic: 
    float_update_field: 
    float_update_field_orientation_in_degrees: false
    initial_pitch: 0.591
    initial_pose_in_base_to_map: false
    initial_roll: 0.035
    initial_x: 1.325
    initial_y: -0.728
    initial_yaw: -0.151
    initial_z: 1.633
    invert_tf_hierarchy: true
    invert_tf_transform: true
    map_frame_id: map_odom_only
    odom_frame_id: odom
    odometry_topic: 
    pose_stamped_topic: 
    pose_with_covariance_stamped_topic: 
    poses_filename: 
    publish_initial_pose: true
    publish_last_pose_tf_timeout_seconds: -1.0
    publish_rate: -30.0
    tf_lookup_timeout: 0.5
    tf_time_offset: 0.0
    transform_pose_to_map_frame_id: true
    transform_tf_message_source: 
    transform_tf_message_target: 
rosdistro: |
  noetic
  
roslaunch:
  uris:
    host_13cmcc37__34511: http://13CMCC37:34511/
rosversion: |
  1.15.11
  
run_id: ebc80af4-e312-11eb-8b02-f59c60209de6
use_sim_time: true

from dynamic_robot_localization.

carlosmccosta avatar carlosmccosta commented on July 30, 2024

For more documentation about the drl pipeline, check the file drl_configs.yaml
https://github.com/carlosmccosta/dynamic_robot_localization/blob/noetic-devel/yaml/schema/drl_configs.yaml

All configurations are loaded from yaml files into the parameter server using launch files.
You do not need to edit any cpp source code (there aren't any hardcoded values, only default values and they are all loaded from the parameter server at runtime).

from dynamic_robot_localization.

Related Issues (20)

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.