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://i.sstatic.net/CvMDD.jpg

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://i.sstatic.net/kns07.jpg

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$

1 Answer 1

1
$\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$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.