mrpt-ros-pkg / mrpt_navigation

ROS 2 nodes wrapping core MRPT functionality: localization, autonomous navigation, rawlogs, etc. SLAM is in other packages.
http://wiki.ros.org/mrpt_navigation
BSD 3-Clause "New" or "Revised" License
167 stars 93 forks source link

ROS 2 rework roadmap #135

Open jlblancoc opened 1 year ago

jlblancoc commented 1 year ago

List of goals for the ROS 2 transition. It will not only be a port of old ROS 1 packages, but a refactoring with the learned experience:

Each package subdirectory should have a README.md with all the relevant documentation: parameters, topics, etc.

Other tasks:

jlblancoc commented 1 year ago

cc: @SRai22 Here we are... :-)

SRai22 commented 1 year ago

Check and document what sensor types are supported. Check if https://github.com/mrpt-ros-pkg/mrpt_navigation/issues/121 is already handled.

Currently we are handling both inputs, sensor_msgs::msg::LaserScan and sensor_msgs::msg::PointCloud2 in mrpt_local_obstacles.

jlblancoc commented 1 year ago

CI is now setup and working, and commits to the main "ros2" branch should now go thru PRs that pass the tests! Latest one is #139 , still WIP due to a large refactoring work in progress, will merge when the CI tests pass, that will mean it builds ok on all ROS2 distros :smile:

KatoROSTeam commented 11 months ago

When can we Expect the mrpt_pf_localization

jlblancoc commented 11 months ago

It's for sure one of my top priorities... but I'm almost done finishing first a brand new Lidar-SLAM package that will generate maps for these localization packages, so this one is enqueued at present...

I definitively want both works to be out by December...

PS: I'll post updates on my LinkedIn profile, as usual.

jlblancoc commented 9 months ago

Finally back to this project... These updated READMEs explain the new way metric maps are to be handled:

(More news soon...)

KatoROSTeam commented 9 months ago

Great to see you back here! Hoping mrpt_pf_localization will release on this December. @jlblancoc

jlblancoc commented 9 months ago

Hi @KatoROSTeam : Officially releasing so users can install it via "apt install..." will take some more weeks, since there is a long queue of pending tasks to publish all the related packages (mola_common, mp2p_icp, etc.) and the ROS infrastructure guys are not moving things forwards these days (they also have the right to rest in holidays!).

But you can test it if built locally. Basic pf-localization, with a 2D gridmap and a 2D lidar, is already working ok for ROS2 and there is a demo ready to test: https://github.com/mrpt-ros-pkg/mrpt_navigation/tree/ros2/mrpt_pf_localization#demos with a video of the result here: https://mrpt.github.io/videos/pf_localization_demo_2dgrid_mvsim.mp4

To build locally, prepare a ROS2 workspace as usual, and clone in its src:

Hope it helps.

KatoROSTeam commented 8 months ago

Hi @jlblancoc , In mrpt_pf_localization_node.cpp, i can find that lot of functions that required to localize on a given map are stopped from running using the #if 0 like below example,

    CObservationOdometry::Ptr& _odometry,
    const std_msgs::msg::Header& _msg_header)
{
#if 0
    std::string base_frame_id = param()->base_frame_id;
    std::string odom_frame_id = param()->odom_frame_id;
    mrpt::poses::CPose3D poseOdom;
    if (this->waitForTransform(
            poseOdom, odom_frame_id, base_frame_id, _msg_header.stamp,
            ros::Duration(1.0)))
    {
        _odometry = CObservationOdometry::Create();
        _odometry->sensorLabel = odom_frame_id;
        _odometry->hasEncodersInfo = false;
        _odometry->hasVelocities = false;
        _odometry->odometry.x() = poseOdom.x();
        _odometry->odometry.y() = poseOdom.y();
        _odometry->odometry.phi() = poseOdom.yaw();
    }
#endif
}

Also the localization launch also not providing map frame as well. How to fix this

jlblancoc commented 6 months ago

@KatoROSTeam This package is now working on a daily basis on our robots, so you could use it now.

@SRai22 I started importing our TPS A* planner into a new branch, and will try to port it to ROS 2 asap ;-)