ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Please suggest all packages to achieve SLAM for robot

asked 2017-09-28 20:27:44 -0500

updated 2017-10-01 04:06:07 -0500

NEngelhard gravatar image

Hi. I am building a robot.

Here is what my robot looks like: image description

Mechanically and electrically it is ready. Time for programming. I read “A Gentle Introduction to ROS”, and have been learning C++.

I am using Indigo with Ubuntu 14.04.

Lidar System Hardware - my lidar system is a Sick LMS200 + Absolute encoder + Servo system. The servo moves the LMS, and the encoder (connected to a Lab Jack U3) is providing the exact location the LMS is pointing at. The encoder has a resolution of 1024, so I get 2.85 lms readings per degree. A low level system call to the Lab Jack U3 will return the encoder position. The servo system is by Applied Motion and is powerful (400watt system), and accurate (70/10,000 is the position error under extreme shaking). To control the servo position I need to send commands via serial. Everything is wired, happy and configured. Manually I can get all 3 main components (LMS, Encoder, Servo) to work (send distance measurements, provide position, and move).

Robot Motion Hardware - The robot has 2 drive wheels (driven by stepper motors with no encoder on them), and 2 caster wheels. The stepper motors are 750 watts, and are driven by a stepper drive which receives commands via Ethernet.

Question - What packages do I need for this robot to drive around and not bump anything while making a map at the same time? Could you please list all the packages needed to:

  • Package to get lidar components (LMS, encoder, servo) to work as a single system
  • Package to use lidar data for SLAM
  • Package for robot to interpret SLAM results and send commands to the drive motors to move

I am very new to ROS, and do not know of any packages other than 'tutlesim'. Any package you suggest I will gladly look into. Do not feel shy to recommend any packages that you feel will help me.


edit retag flag offensive close merge delete

2 Answers

Sort by » oldest newest most voted

answered 2017-10-01 04:00:04 -0500

NEngelhard gravatar image

You have built in impressive system, however, this question is too broad to be answered in one thread. It would be better if you'd open several questions that each solve a single component. Doing SLAM on a moving platform with a rotating sensor is a really hard problem and most likely not what you want to do as your first project.

I suggest you only use the scanner with a stationary robot (move, measure, update map, move, ...) In this case, you only need the encoder values of your Lidar-motor. So one way to proceed would be:

Create a urdf-model (tutorials) of your robot. A urdf describes the mechanical setup of your robot and defines frames for each component (e.g. a frame for the robot and one rotating frame for the scanner) You will need a rotating joint for your laser. Next steps afterwards are the Robot State Publisher who reads the current joint values and publishes the updated frames.

You can then use the TF-Library to get the (interpolated) pose of your Sick for every scan line. (If you rotate the scanner slow enough, you don't have to take into account that the scan line is not measured at one point in time but over several milliseconds).

If you have managed that (and please fell free to ask a lot here), you can think about merging the pointclouds (e.g. an ICP implemented in PCL) and pathplanning (MoveBase).

edit flag offensive delete link more



@NEngelhard Thanks for explaining this to me. The answer you provided is exactly what I needed; a starting place for using ROS. Thank you.

BuilderMike gravatar image BuilderMike  ( 2017-10-01 11:18:50 -0500 )edit

No problem. It's fun to help people who showed that they already invested quite some time into a project.

NEngelhard gravatar image NEngelhard  ( 2017-10-01 15:13:28 -0500 )edit

answered 2017-10-10 11:13:04 -0500

Please take a look at this example, and check out the related github pages for a decent first pass at navigation:

Best wishes!

edit flag offensive delete link more

Question Tools



Asked: 2017-09-28 20:22:58 -0500

Seen: 2,147 times

Last updated: Oct 10 '17