This is a clutter dataset toolbox.
This toolbox is part of FP-Loc 2.0.
This toolbox integrates a pipeline that transforms a floor plan into an indoor lidar point cloud dataset with clutter, including:
- Converting from svg format to 3D model in Gazebo.
- Generating trajectory according to landmarks in the model.
- Generating clutters and detecting collision.
- Recording lidar and IMU messages in the 3D model.
This toolbox uses ROS as the framework, and uses gazebo as the simulation tool. In addition, we use pcg_gazebo as a tool for using gazebo with python. In order to make it easy for you to use different tools in the toolbox, we will list the libraries used by different tools separately.
For all the tools, we tested them on Ubuntu 18.04 and ROS Melodic, using Gazebo version 11.0.0.
The location of this tool is utils/building_gen/gen_building.py
. Please download pcg_gazebo in advance, and rewrite the path option in the file. This tool converts the svg format floor plan generated by FloorplanTransformation into a model in Gazebo.
FloorplanTransformation into a model in Gazebo. FloorplanTransformation is a method of recovering semantic information from floor plan images using deep neural networks.
For your convenience, we also provide a file that generates a Gazebo world model, located at utils/building_gen/gen_world.py
. If you use this tool, please run utils/building_gen/gen_building.py
firstly.
The location of this tool is utils/obj_gen/
. Please download pcg_gazebo and matplotlib in advance, and rewrite the path and landmarks options in the file.
We used some furniture models provided by Gazebo and some self-made models, located in models/
, please place them under the ~/.gazebo/
folder.
ceiling.py
generates clutter on the ceiling, such as cylindrical and cubic clutter, to simulate furniture such as lamps.ground.py
generates clutter on the ground. The clutter on the ground satisfies two constraints, perpendicular to the ground and not overlapping with each other. Here we use the official gazebo models of tables, chairs and other furniture as clutter.wall.py
generates clutter on the wall. Panels were made for features such as Loam, simulating larger clutter such as wardrobes.pycubicspline.py
. A function that generates trajectories, called by the above three tools, to detect whether the clutters collide with the trajectories.
This tool generates trajectory based on the given landmarks and records lidar and IMU messages along the trajectory in the given Gazebo model.
The initial position of the sensor can be modified in launch/demo.launch
, the landmarks can be modified in src/car_steer.cpp
.
Enter your catkin workspace and execute following command:
# build
catkin_make
source ~/catkin_ws/devel/setup.bash
# run
roslaunch virtual_dataset demo.launch
Our algorithm for generating trajectories borrows a lot of code from CubicSpline.