Integrating Autonomous Navigation with SLAM

asked 2018-07-15 13:38:38 -0500

Prasanth Suresh gravatar image

updated 2018-07-15 13:43:12 -0500

jayess gravatar image

I'm a beginner in ROS and I'm trying to develop a robot that can autonomously navigate with the help of 3D Lidar data and IMU data. Using individual motor speeds as feedback for the navigation isn't an option because the robot is going to drive on sand and it is going to slip. So using IMU data is the only sure way to say it has reached its goal pose. Here is my scenario:

I have an arduino to transform cmd_vel (subscribed) data into PWM values for the motors. I have a 3D lidar with an attached IMU to help me with mapping. I'm using an open source package like LOAM/Google cartographer for the mapping part. Now my question is, how do I integrate all this to use the data from the map to produce odom values that can be converted into cmd_vel data and published to my arduino for motor control. (I'm not sure I have the scenario right, but you get the idea)

From all the reading I did online, people give vague pointers about Hector_Slam, gmapping, hector_exploration_planner, rosserial, etc. I haven't found even a single source that walks me through the steps, like,

  1. Which topic generates what kind of data, which node should publish/subscribe to which topic.
  2. How I can overcome not having motor encoder values by using IMU instead, etc.

Any guidance or pointers to clear tutorials, open source github packages, videos, etc will be greatly appreciated.

Thanks in advance. :)

edit retag flag offensive close merge delete

Comments

Have you looked into navigation ?

Choco93 gravatar imageChoco93 ( 2018-07-16 01:46:21 -0500 )edit

laser_scan_matcher might also be useful as an odometry source.

Humpelstilzchen gravatar imageHumpelstilzchen ( 2018-07-16 02:53:03 -0500 )edit

Thank you @Choco93 and @Humels for the replies, but for someone who is just getting started with ROS, these individual package wikis lead me into rabbit holes and lead me nowhere in the end. Is there a tutorial that is specific to my application? Or a github package that implements something similar

Prasanth Suresh gravatar imagePrasanth Suresh ( 2018-07-16 09:47:51 -0500 )edit

I recommend doing all tutorials

Humpelstilzchen gravatar imageHumpelstilzchen ( 2018-07-16 10:50:21 -0500 )edit

@Humpelstilzchen, that's a very wise suggestion, however, I'm on a very tight timeline and I need only the relevant steps I need to follow to get it running

Prasanth Suresh gravatar imagePrasanth Suresh ( 2018-07-16 11:06:57 -0500 )edit

Unfortunately I estimated that I needed about 80% of the tutorials to get my robot working.

Humpelstilzchen gravatar imageHumpelstilzchen ( 2018-07-16 13:05:15 -0500 )edit

If you want it to work properly you have to understand how ros is structured, because you will definitely run into problems you will have no idea how to solve. You will get odom from navigation, you can also use laser_scan_matcher as additional odom source as input for navigation.

Choco93 gravatar imageChoco93 ( 2018-07-17 01:34:37 -0500 )edit