Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Local mapping with range sensors and optical flow #12

Open
5 of 6 tasks
hflemmen opened this issue May 14, 2020 · 4 comments
Open
5 of 6 tasks

Local mapping with range sensors and optical flow #12

hflemmen opened this issue May 14, 2020 · 4 comments
Assignees
Labels
enhancement New feature or request

Comments

@hflemmen
Copy link
Collaborator

hflemmen commented May 14, 2020

Details

Input

  • Range sensor readings
  • Odometry data (Relative movement data)

Output

  • Sparse pointcloud of the last n range sensor readings in the "room frame".

We can try to use the relative pose between the different range sensor readings to align them in the same frame. I.e. the successive range sensor readings of the same wall should end up on a line. Then it might be that we can use this (very) sparse point cloud in the next generation decision maker. The odometry estimate from the optical flow sensor will drift over time, invalidate old mapped features, but we can just discard them. This will give us a less extensive map, but maybe it can be helpful nevertheless.

Tasks

  • Read the relative pose from mavros.
  • Read the range sensor values
  • Decide for a feasible datastructure for the map
  • Implement mapping
  • Publish a ros pointclout to a suitable topic. (And view the visualsation in rviz)
  • Write tests

Criteria

  • A node that publishes a local map of the drone
@hflemmen hflemmen added the enhancement New feature or request label May 14, 2020
@adrisor23
Copy link
Contributor

Can someone assign me to this issue?

@hflemmen
Copy link
Collaborator Author

hflemmen commented Jun 4, 2020

I made the layout for the local mapper node in 917a2e7. There we have

  • nodes/map_node.py which contains the ros interface of the node and calls the logic in src.
  • src/local_map/map_logic.py which contains the logic which is called from test and nodes.
  • test/map_logic_test.py which contains the unittests for the logic in src.

I added some TODOs, both in the interface part (Eg. finding the correct topic for our case, and converting from the datatype the logic outputs to the relevant ROS message) and in the logic part. To be fair, nothing in the logic is made and most of the task is to make that.

I encourage you to separate the logic as much as reasonable into pure functions to make the testing easier.

To test this, you can write unittests for each function you make. When we are ready to fly, we can test it by running it together with the rest of the system too.

@hflemmen
Copy link
Collaborator Author

hflemmen commented Jun 7, 2020

I now made the node interface in 3f4b8da. I tested briefly if it works to publish point clouds to rviz, and it does. I have not tested the range sensors. I believe I have found the correct mavros topic for the position, but if not can we change it later.

@adrisor23
Copy link
Contributor

I have mostly implemented the mapping function and the "sensor value age tracker" also, but still have to enable deleting the oldest values.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants