1
$\begingroup$

sorry for the long post, just want to make sure i include all the details.

I am working on learning ROS2 by building a robot which maps and navigates my apartment.

  • I'm using the RPLidar A1 sensor with the RPLidar package

  • a Robot Create 2 as the chassis with the create_robot package

  • nav2 for navigation

  • slam-toolbox for mapping

and running everything off of a Raspberry Pi 4 4GB with Ubuntu Mate

Currently, I am able to get LIDAR readings to successfully be viewed in RVIZ. I can also get one or two frames of a map to be built. When the robot starts to move, the lidar readings update, but the map itself does not. However, i continue to 'receive' map updates at about 1 every 1.5 seconds.

Here are images from rviz showing the moving scan but with the non-moving map: https://imgur.com/a/acfHs4I

I'm also getting a few errors, from RVIZ i am getting: [rviz]: Message Filter dropping message: frame 'map' at time 1619194935.882 for reason 'Unknown'

from nav2, I am getting [global_costmap.global_costmap_rclcpp_node]: Message Filter dropping message: frame 'laser' at time 1619194959.629 for reason 'Unknown'

My frame map looks like this (Most of the frames are created by the create_robot package): https://imgur.com/a/WFDXKxj

I suspect my issue is with my transforms, either they're configured completely wrong, or there is something small

  • slam_toolbox does the transform from map -> odom
  • the create_robot package has other transforms from base_link to wheels, bumpers, etc and it also publishes odom data
  • using tf2, i'm publishing a transform between base_link and laser and then laser to base_scan.
  • I am also creating a transform from odom to base_footprint because of a ros2 navigation course i was taking on the construct.

Has anyone seen this type of error before? I feel like I am most of the way to the solution but i'm missing something easy

$\endgroup$
0
$\begingroup$

I ended up solving my issue.

Turns out, the create_robot package publishes a transform from odom -> base_footprint. I needed to toy around with my transforms so that:

slam-toolbox created map -> odom

create_robot created odom -> base_footprint

On top of those two things, I had an issue with timing where the transform from map -> base_link did not work either. There was an issue with timings where I was getting the error:

[INFO] [1619986350.507533125] [tf2_echo]: Waiting for transform map -> base_footprint: Lookup would require extrapolation into the past. Requested time 0.200000 but the earliest data is at time 1619986346.813953, when looking up transform from frame [base_footprint] to frame [map]

To solve this error, I just had to call nav2 with the argument use_sim_time:=false

Now that I've done this, everything seems to be working completely fine.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.