-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Ground Truth aid for Semantic Segmentation of Point Cloud #1948
Conversation
Fixed the indent.
@madratman, I have no clue why the CI failed. Any insight? |
You can see the travis build logs by clicking "Details" on the right hand side of " continuous-integration/travis-ci/pr — The Travis CI build failed " above. tl;dr In file included from /build/AirLib/src/api/RpcLibClientBase.cpp:37:
/build/AirLib/include/api/RpcLibAdapatorsBase.hpp:491:15: error: no member named
'labels' in 'msr::airlib::LidarData'
labels = s.labels;
~ ^
/build/AirLib/include/api/RpcLibAdapatorsBase.hpp:501:6: error: no member named
'labels' in 'msr::airlib::LidarData'
d.labels = labels;
~ ^
2 errors generated.
AirLib/CMakeFiles/AirLib.dir/build.make:62: recipe for target 'AirLib/CMakeFiles/AirLib.dir/build/AirLib/src/api/RpcLibClientBase.cpp.o' failed
make[2]: *** [AirLib/CMakeFiles/AirLib.dir/build/AirLib/src/api/RpcLibClientBase.cpp.o] Error 1
CMakeFiles/Makefile2:159: recipe for target 'AirLib/CMakeFiles/AirLib.dir/all' failed
make[1]: *** [AirLib/CMakeFiles/AirLib.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 68%] Building CXX object MavLinkCom/MavLinkTest/CMakeFiles/MavLinkTest.dir/build/MavLinkCom/MavLinkTest/main.cpp.o
[ 69%] Linking CXX executable ../../output/bin/MavLinkTest I fail to see the point of this PR is filling in the |
Added the labels member to the LidarData struct
@madratman , my bad that i didnt scroll to the end. Added the new labels member to the CommonStructs.hpp now. Will try the PR again now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added Comments to explain this implementation
@@ -356,6 +356,7 @@ class LidarData(MsgpackMixin): | |||
point_cloud = 0.0 | |||
time_stamp = np.uint64(0) | |||
pose = Pose() | |||
labels = [] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
labels list for receiving the labels from the c++
|
||
|
||
//lidar return actor variables | ||
FName actor_temp; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
variable to hold the actor name (i,e, label)
point_cloud.emplace_back(point.x()); | ||
point_cloud.emplace_back(point.y()); | ||
point_cloud.emplace_back(point.z()); | ||
labels.emplace_back(actor_string); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pushing the name of the actors (actor_string) into the labels vector
if (is_hit) | ||
{ | ||
//lidar return actor | ||
actor_temp = hit_result.Actor.Get()->GetFName(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these two lines (153 and 154) get the name of the actor
This PR provides the aid for semantic segmentation of the pointcloud obtained from the LIDAR. The getLidarData() API will provide a fourth attribute called labels which refers to the label of every point in the pointcloud.
The labels are the names of actors in the environment. So after the obtaining the pointcloud with the labels, one can postprocess the labels to the desired classes of their choice. i.e. The Blocks environment has an orange ball and every point falling on this orange ball will be named "OrangeBall". So the labels can be changed as per someone's requirement.
-----Python API-----
Add the following lines to parse_lidarData function to create a pandas dataframe of the point cloud with labels and then save it to a .csv file. You also need to install and import pandas in your script.
People familiar with the blocks environment know the cone and the orangeball. In the image below you can see the corresponding points of the pointcloud along with their labels. (Software used for visualizing: CloudCompare )