{"id":31211500,"url":"https://github.com/cyberagentailab/pointcloud2gazebo","last_synced_at":"2025-10-15T17:23:26.141Z","repository":{"id":212051010,"uuid":"730562959","full_name":"CyberAgentAILab/pointcloud2gazebo","owner":"CyberAgentAILab","description":"pointcloud2gazebo is a package that allows you to create a Gazebo World from a 3D point cloud.","archived":false,"fork":false,"pushed_at":"2023-12-12T07:46:56.000Z","size":8903,"stargazers_count":94,"open_issues_count":1,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-10T07:42:52.647Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CyberAgentAILab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-12T07:40:57.000Z","updated_at":"2025-08-26T10:03:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"646e162c-e341-4998-aaef-847d180c7086","html_url":"https://github.com/CyberAgentAILab/pointcloud2gazebo","commit_stats":null,"previous_names":["cyberagentailab/pointcloud2gazebo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CyberAgentAILab/pointcloud2gazebo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberAgentAILab%2Fpointcloud2gazebo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberAgentAILab%2Fpointcloud2gazebo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberAgentAILab%2Fpointcloud2gazebo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberAgentAILab%2Fpointcloud2gazebo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CyberAgentAILab","download_url":"https://codeload.github.com/CyberAgentAILab/pointcloud2gazebo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberAgentAILab%2Fpointcloud2gazebo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274496558,"owners_count":25296401,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-21T05:28:37.121Z","updated_at":"2025-09-21T05:28:40.993Z","avatar_url":"https://github.com/CyberAgentAILab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pointcloud2gazebo\n\n## Introduction\n\n`pointcloud2gazebo` is a package that allows you to create a Gazebo World from a 3D point cloud.\n\n|Input Point Cloud|Generated Mesh|Gazebo World|\n|:---:|:---:|:---:|\n|![input point cloud](images/input.png)|![generated mesh](images/mesh.png)|![Gazebo World](images/gazebo_world.png)|\n\n### Demo Movie\n\nThe following demo showcases a robot navigating a Gazebo World generated by this package.\n\n![Demo Movie](images/pointcloud2gazebo_nav2-3x.gif)\n\n## Requirements\n\n- python ==3.10\n- Open3D\n- NumPy\n- Traitlets\n\n## Preparation\n\n### Installing the Package\n\n```shell\npip install -r requirements.txt\n```\n\nIf you use Docker for setup of this tool, please execute the following command.\n\n```shell\ndocker build -t pointcloud2gazebo .\n./launch_container.sh\n```\n\n### Generating 3D Point Cloud Map\n\nYou will need to generate a 3D point cloud map. As an example, we have prepared [data/cloud.ply](data/cloud.ply). This data was generated using [RTAB-Map](https://apps.apple.com/td/app/rtab-map-3d-lidar-scanner/id1564774365).\n\n## Usage\n\n### Generating a Gazebo World\n\n```shell\npython3 generate_world.py --input=data/cloud.ply\n```\n\nIf you enable to visualize mesh, please add `--vis` option.\n\n```shell\npython3 generate_world.py --input=data/cloud.ply --vis\n```\n\nIf you encounter the following error, please execute `xhost +local:` before execute `generate_world.py`.\n\n```shell\n$ python3 generate_world.py --input=data/cloud.ply --vis\nNo protocol specified\n[Open3D WARNING] GLFW Error: X11: Failed to open display :0\n[Open3D WARNING] Failed to initialize GLFW\n[Open3D WARNING] [DrawGeometries] Failed creating OpenGL window.\n```\n\n### Copying the Generated Gazebo World to `GAZEBO_MODEL_PATH`\n\n```shell\nmkdir -p ~/.gazebo/models\ncp -r models/pointcloud2gazebo ~/.gazebo/models/\n```\n\n### Launching the Gazebo World\n\nIf you try to spawn Gazebo World generated by this package, you need to install Gazebo. Please read [official document](https://classic.gazebosim.org/tutorials?tut=install_ubuntu\u0026cat=install).\n\n```shell\ngazebo worlds/pointcloud2gazebo.world\n```\n\n## Appendix\n\n### Configuration\n\nYou can customize the package using [config/config.py](config/config.py).\n\n|Parameter|Description|Type|Unit|\n|---|---|---|---|\n|Crop.min_z|Minimum height of points to create Gazebo world.|float|meter|\n|Crop.max_z|Maximum height of points to create Gazebo world.|float|meter|\n|NoiseRemoval.nb_points|Number of points within the radius. Refer to [open3d.geometry.PointCloud.remove_radius_outlier](http://www.open3d.org/docs/release/python_api/open3d.geometry.PointCloud.html#open3d.geometry.PointCloud.remove_radius_outlier).|int|-|\n|NoiseRemoval.radius|Radius of the sphere. Refer to [open3d.geometry.PointCloud.remove_radius_outlier](http://www.open3d.org/docs/release/python_api/open3d.geometry.PointCloud.html#open3d.geometry.PointCloud.remove_radius_outlier).|float|meter|\n|VoxelDownSample.voxel_size|Voxel size to downsample into. Refer to [open3d.geometry.PointCloud.voxel_down_sample](http://www.open3d.org/docs/release/python_api/open3d.geometry.PointCloud.html#open3d.geometry.PointCloud.voxel_down_sample).|float|meter|\n|TriangleMesh.alpha|Parameter to control the shape. A large value will yield a shape close to the convex hull. Refer to [open3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape](http://www.open3d.org/docs/release/python_api/open3d.geometry.TriangleMesh.html#open3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape).|float|-|\n\nThe sample data ([data/cloud.ply](data/cloud.ply)) was generated using [RTAB-Map](https://apps.apple.com/td/app/rtab-map-3d-lidar-scanner/id1564774365). The following parameters were set for this data:\n\n```python\nc.Crop.min_z = -1.2\nc.Crop.max_z = 1.0\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyberagentailab%2Fpointcloud2gazebo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyberagentailab%2Fpointcloud2gazebo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyberagentailab%2Fpointcloud2gazebo/lists"}