0
$\begingroup$

Rosanswers logo

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.

Thanks.


Originally posted by BuilderMike on ROS Answers with karma: 247 on 2017-09-28

Post score: 0

$\endgroup$

2 Answers 2

0
$\begingroup$

Rosanswers logo

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).


Originally posted by NEngelhard with karma: 3519 on 2017-10-01

This answer was ACCEPTED on the original site

Post score: 3


Original comments

Comment by BuilderMike on 2017-10-01:
@NEngelhard Thanks for explaining this to me. The answer you provided is exactly what I needed; a starting place for using ROS. Thank you.

Comment by NEngelhard on 2017-10-01:
No problem. It's fun to help people who showed that they already invested quite some time into a project.

$\endgroup$
0
$\begingroup$

Rosanswers logo

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

http://www.clearpathrobotics.com/assets/guides/jackal/navigation.html

Best wishes!


Originally posted by IliaBaranov with karma: 101 on 2017-10-10

This answer was NOT ACCEPTED on the original site

Post score: 1

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.