Giter VIP home page Giter VIP logo

lemonbot's People

Contributors

bernardomig avatar miguelriemoliveira avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

lemonbot's Issues

Create hybrid mode of aquisition

Create hybrid mode of acquisition, such as:

  • Stops between points for some image capture;
  • Passes all the laserscan for the laser pipeline.

"Bad" capture in hybrid mode of acquisition

There was a gap showing in each pause in hybrid mode, as shown here:

Screenshot_from_2018-03-12_14-57-16.png

Initially it was expected to be something related to the code, but finally it was discovered that it is due to the flir_ptu_d46 action server default error parameters, that were too big for the application.

class PTUControl:
    ...
    def _init_(self):
        ...
        self.pstep = rospy.get_param('/ptu/pan_step', 0.00089759763795882463)
        self.tstep = rospy.get_param('/ptu/tilt_step', 0.00089759763795882463)
        ...

Changing each one to a 10x smaller value leads to the following results:

Screenshot_from_2018-03-12_15-17-08.png

Control PTU mannualy

Implement launch file to start joint state publisher.

Should remap to /ptu/cmd topic

New calibration method for ptu-laser calibration

The new calibration method for the ptu-laser calibration is on development.

Methodology

  1. A pointcloud generated by a initial estimate is segmented into several clusters of points belonging to a plane. This clusters are extracted every time a new pointcloud is generated by the calibration algorithm.
  2. For each plane cluster of points, a plane fitting algorithm is done to calculate the RMS of the distance to the plane and the normal of the plane.
  3. A set of relations between pairs of planes are given. Right now, the relation is the dot product of the normals of the planes. This is useful for establishing the angle between the planes.
  4. A cost function is calculated, using the the relations and the RMS of the planes, dependent of the ptu_laser_calibration. This is expressed by 6 values: the position vector (x, y, z) and the rotation in axis-angle notation (rx, ry, rz) (the angle is the norm of the vector and the axis is the normalized vector).
  5. The cost function is minimized. This is currently done by the Nelder-Mead method, which is available in scipy.optimize.

Results

The following figures show a side by side comparison of the the new method (in white) vs the old method (in red):

calibration_1.png

calibration_2.png

calibration_3.png

Conclusion

This method is superior to the old method (Hand2Eye + Radlocc) by the following reasons:

  1. It shows better results.
  2. It decouples the camera of the system, making it possible to focus uniquely on the geometry, with is now only dependent of this calibrations, instead of 2.

However, there are some cons too:

  1. It need a good initial estimate, which can be done by the previous method or by a manual estimate.
  2. It requires some manual work in the segmentation of the pointcloud in the different clusters, as well as creating the relations between the planes.
  3. The ground-truth need to be very good (for example, the walls need to be planar and need to be perpendicular).

Radlocc Calibrations

The milestones for the radlocc calibration is:

  • Change the TF tree (put the laser as a child of the camera)
  • Find a manual calibration
  • Create a automatic calibration for camera <-> laser with radlocc
  • Test calibrations (radlocc and hand2eye)
  • Create filter nodes (for point clouds and lasers)

Create a colored point cloud

The idea is to paint each vertex in the accumulated point cloud (created with the laser) with color given from the image of the camera.

The node will be called point_cloud_colorizer

Analyse how the scan velocity (in continuous mode) affects the obtained point cloud

Hi @bernardomig ,

for your thesis it would be interesting to add a table with 4 or 5 columns, each corresponding to a scan speed. Could show that, the fastest the scan speed, the sparsest the point cloud. This may sound rather obvious but we don't know about other effects, e.g. will the registration fail more?

You can actually make this experiment, prepare the thesis document and fill the table.

Also we could analyse distance between point clouds, for example using a slow speed scan as ground truth. I can give you some ideas on that.

Create acquisition

Acquisition node

is configured using a yaml file and sends the ptu to several positions and acquires an image / point cloud at each position.

Should also have a continuous acquisition mode.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.