Machine Hall
Cow and Lady Dataset
제약된 하드웨어
KITTI Dataset
EuRoC Dataset
해변 매핑
로컬에서 빌드
온라인 문서를 로컬에서 컴파일하려면 다음 종속성이 필요합니다:
sudo apt-get install python-pip doxygen python-pyaudio
pip install sphinx exhale breath sphinx_rtd_theme recommonmark --user
그런 다음 html 문서를 컴파일할 수 있습니다:
cd ~/catkin_ws/src/voxblox/voxblox/docs
make html
이 작업은 docs/_build
폴더에 웹사이트의 홈페이지가 위치한 docs/_build/html/index.html
을 생성합니다.
페이지 추가
.rst
또는 .md
파일을 docs/pages
폴더에 추가하기만 하면 자동으로 문서에 포함됩니다. 사용된 마크다운 파서는 표를 지원하지 않습니다.
문서 생성 구조
readthedocs
테마를 사용하며 readthedocs
에서 호스팅됩니다. 문서 생성에 사용된 파일은 다음과 같습니다:conf.py
: Sphinx 실행 방식을 제어하는 파이썬 스크립트로, Breathe와 Exhale 확장 기능을 로드하고 프로젝트를 설정합니다.Doxyfile
: Doxygen에서 사용되는 모든 옵션을 포함하는 파일입니다.index.rst
: .rst
형식으로 생성된 웹사이트의 홈페이지입니다. 또한 웹사이트 사이드바에 표시되는 Sphinx TOC 트리의 사양도 포함됩니다.logo.gif
: 프로젝트 로고로 표시되는 이미지입니다.Makefile
: Sphinx를 사용해 웹사이트를 빌드합니다.requirements.txt
: Exhale 확장을 설치하기 위해 readthedocs
에서 사용됩니다.pages
: .rst
또는 .md
형식의 추가 위키 페이지가 포함된 폴더입니다.다른 프로젝트에서 동일한 문서를 사용하기
다른 프로젝트에서 동일한 접근 방식을 사용하려면 다음을 수행하십시오:
Docs
폴더를 프로젝트의 루트 디렉토리로 복사하십시오.conf.py
파일에서 name
변수의 값을 변경하십시오.index.rst
를 새 프로젝트에 맞게 수정하십시오.pages
폴더의 내용을 프로젝트의 .md
및 .rst
파일로 변경하십시오.docs/_build
, docs/doxyoutput
및 docs/api
를 .gitignore
파일에 추가하십시오 (로컬에서 빌드할 때).readthedocs.io
에서 새 프로젝트를 생성하고, 고급 설정에서 requirements.txt
파일 경로를 docs/requirements.txt
로 설정하십시오.설치
Voxblox를 설치하려면 ROS Indigo, ROS Kinetic 또는 ROS Melodic을 설치하십시오. 이러한 지침은 Ubuntu에 해당하며, Voxblox는 OS X에서도 실행되지만, 이 경우 사용자가 스스로 해결해야 할 것입니다.
먼저 추가 시스템 종속성을 설치하십시오(필요에 따라 kinetic을 indigo 또는 melodic으로 교체):
sudo apt-get install python-wstool python-catkin-tools ros-kinetic-cmake-modules protobuf-compiler autoconf
다음으로 몇 가지 다른 종속성을 추가합니다. 아직 catkin 워크스페이스가 없다면 다음과 같이 설정하십시오:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
catkin config --extend /opt/ros/kinetic
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin config --merge-devel
GitHub에서 SSH 키를 사용하는 경우(권장):
cd ~/catkin_ws/src/
git clone git@github.com:ethz-asl/voxblox.git
wstool init . ./voxblox/voxblox_ssh.rosinstall
wstool update
SSH 키를 사용하지 않고 https를 사용하는 경우:
cd ~/catkin_ws/src/
git clone https://github.com/ethz-asl/voxblox.git
wstool init . ./voxblox/voxblox_https.rosinstall
wstool update
이미 wstool을 초기화한 경우 위의 wstool init
을 wstool merge -t
로 교체하십시오.
컴파일:
cd ~/catkin_ws/src/
catkin build voxblox_ros
Voxblox Node
목차
게시된 토픽과 구독된 토픽
참고: voxblox_node
는 tsdf_server
(TSDF를 원할 경우) 또는 esdf_server
(TSDF와 ESDF를 모두 원할 경우)로 대체되었습니다. tsdf_server
와 esdf_server
는 다음 토픽들을 게시하고 구독합니다.
게시된 토픽
mesh voxblox_msgs::MeshBlock
: RViz에서 볼 수 있는 형태로 TSDF에서 생성된 메쉬를 시각화하는 토픽입니다. update_mesh_every_n_sec
로 업데이트 주기를 제어할 수 있습니다.surface_pointcloud pcl::PointCloud<pcl::PointXYZRGB>
: 표면 근처의 보컬을 색상화한 포인트클라우드입니다.tsdf_pointcloud pcl::PointCloud<pcl::PointXYZI>
: 할당된 모든 보컬을 보여주는 포인트클라우드입니다.
mesh_pointcloud pcl::PointCloud<pcl::PointXYZRGB>
: output_mesh_as_pointcloud
가 true로 설정된 경우에만 나타나며, 생성된 메쉬의 정점을 포함하는 포인트클라우드를 출력합니다.mesh_pcl pcl_msgs::PolygonMesh
: output_mesh_as_pcl_mesh
가 true로 설정된 경우에만 나타나며, generate_mesh
서비스에 의해 생성된 모든 메쉬를 출력합니다.tsdf_slice pcl::PointCloud<pcl::PointXYZI>
: 저장된 거리 값에 의해 색상화된 TSDF의 2D 수평 슬라이스를 출력합니다.esdf_pointcloud pcl::PointCloud<pcl::PointXYZI>
: 할당된 모든 ESDF 보컬의 값을 보여주는 포인트클라우드입니다. esdf_server
를 사용하는 경우에만 나타납니다.esdf_slice pcl::PointCloud<pcl::PointXYZI>
: 저장된 거리 값에 의해 색상화된 ESDF의 2D 수평 슬라이스를 출력합니다. esdf_server
를 사용하는 경우에만 나타납니다.occupied_nodes visualization_msgs::MarkerArray
: TSDF에서 할당된 보컬의 위치를 시각화합니다.tsdf_map_out voxblox_msgs::Layer
: TSDF 레이어 전체를 게시하여 다른 노드에서 업데이트하도록 합니다(tsdf_layer_in
을 듣는 노드). publish_tsdf_map
이 true로 설정된 경우에만 게시됩니다.esdf_map_out voxblox_msgs::Layer
: ESDF 레이어 전체를 게시하여 다른 노드에서 업데이트하도록 합니다(esdf_layer_in
을 듣는 노드). publish_esdf_map
이 true로 설정된 경우에만 게시됩니다.traversable pcl::PointCloud<pcl::PointXYZI>
: (ESDF 서버 전용) 맵 내에서 통과 가능한 것으로 간주되는 모든 포인트를 출력하며, publish_traversable
및 traversability_radius
매개변수에 의해 제어됩니다.구독된 토픽
transform geometry_msgs::TransformStamped
: use_tf_transforms
가 false로 설정된 경우에만 나타나며, 세계 프레임에서 현재 센서 프레임으로의 변환을 의미합니다.pointcloud sensor_msgs::PointCloud2
: 통합할 입력 포인트클라우드입니다.freespace_pointcloud sensor_msgs::PointCloud2
: use_freespace_pointcloud
가 true로 설정된 경우에만 나타나며, 이 토픽의 포인트들은 빈 공간에 떠 있는 것으로 간주됩니다. 이러한 포인트들은 맵에서 더 완전한 빈 공간 정보를 생성하는 데 도움이 될 수 있습니다.tsdf_map_in voxblox_msgs::Layer
: 이 토픽에서 받은 TSDF 레이어로 현재 TSDF 레이어를 교체합니다. 보컬 크기와 보컬 당 면적은 일치해야 합니다.esdf_map_in voxblox_msgs::Layer
: 이 토픽에서 받은 ESDF 레이어로 현재 ESDF 레이어를 교체합니다. 보컬 크기와 보컬 당 면적은 일치해야 합니다.icp_transform geometry_msgs::TransformStamped
: ICP가 활성화된 경우, 세계 프레임과 ICP 프레임 간의 현재 보정된 변환입니다.서비스
tsdf_server
와 esdf_server
는 다음과 같은 서비스를 제공합니다:
generate_mesh
: 이 서비스는 빈 요청과 응답을 가지고 있습니다. 이 서비스를 호출하면 새로운 메쉬가 생성됩니다. mesh_filename
이 빈 문자열로 설정되지 않는 한, 메쉬는 ply
파일로 저장됩니다. output_mesh_as_pointcloud
가 true로 설정된 경우, 메쉬는 mesh_pointcloud
토픽에 출력되며, output_mesh_as_pcl_mesh
가 true로 설정된 경우 mesh_pcl
토픽에도 출력됩니다.generate_esdf
: 이 서비스는 빈 요청과 응답을 가지고 있으며, ESDF 맵 업데이트를 트리거하는 데 사용할 수 있습니다.save_map
: 이 서비스는 voxblox_msgs::FilePath::Request
와 voxblox_msgs::FilePath::Response
를 가집니다. 이 서비스 호출은 TSDF 레이어를 .vxblx
파일로 저장합니다.load_map
: 이 서비스는 voxblox_msgs::FilePath::Request
와 voxblox_msgs::FilePath::Response
를 가집니다. 이 서비스 호출은 TSDF 레이어를 .vxblx
파일에서 불러옵니다.publish_map
: 이 서비스는 빈 요청과 응답을 가지며, TSDF 및 ESDF 레이어를 tsdf_map_out
및 esdf_map_out
토픽에 게시합니다.publish_pointclouds
: 이 서비스는 빈 요청과 응답을 가지며, TSDF 및 ESDF 포인트클라우드 및 슬라이스를 게시합니다.매개변수
tsdf_server
및 esdf_server
매개변수의 요약입니다. 모든 매개변수는 다음과 같이 나열됩니다:
일반 매개변수
min_time_between_msgs_sec
: 0.0pointcloud_queue_size
: 1verbose
: truemax_block_distance_from_body
: 3.40282e+38TSDF 통합기 매개변수
method
: “merged”start_voxel_subsampling_factor
및 max_consecutive_ray_collisions
매개변수를 통해 조정할 수 있습니다. 이 방법은 현재 5cm 이하의 보컬로 실시간 응용 프로그램에 사용할 수 있는 유일한 통합기입니다.tsdf_voxel_size
: 0.2tsdf_voxels_per_side
: 16voxel_carving_enabled
: truetruncation_distance
: 2 * tsdf_voxel_size
max_ray_length_m
: 5.0min_ray_length_m
: 0.1max_weight
: 10000.0use_const_weight
: falseallow_clear
: truemax_ray_length_m
이상의 거리에 있는 포인트까지 통합됩니다.use_freespace_pointcloud
: falsefreespace_pointcloud
라는 두 번째 구독 토픽이 나타납니다. 이 토픽의 포인트들은 절단 거리 밖의 비어 있는 공간에 떠 있는 것으로 간주됩니다.빠른 TSDF 통합기 고유 매개변수
이 매개변수들은 통합기 방법
이 "fast"로 설정된 경우에만 사용됩니다.
start_voxel_subsampling_factor
: 2start_voxel_subsampling_factor
로 나눈 것입니다.max_consecutive_ray_collisions
: 2max_consecutive_ray_collisions
번 통과하면 새로운 정보를 추가하지 않는 것으로 간주되어 투사가 중단됩니다.max_integration_time_s
: 3.40282e+38clear_checks_every_n_frames
: 1ESDF 통합기 매개변수
esdf_max_distance_m
: 2.0esdf_default_distance_m
: 2.0esdf_max_distance_m
이상의 값에 대해 설정되는 기본 거리입니다.clear_sphere_for_planning
: falseclear_sphere_radius
: 1.5occupied_sphere_radius
: 5.0ICP 정제 매개변수
ICP 기반의 정제는 병합 전에 입력 포인트클라우드의 포즈에 적용될 수 있습니다.
enable_icp
: falseicp_refine_roll_pitch
: trueaccumulate_icp_corrections
: trueicp_corrected_frame
: icp_corrected
pose_corrected_frame
: pose_corrected
icp_corrected_frame
에 대해 상대적으로 ICP 보정 포즈를 출력하는 데 사용되는 TF 프레임입니다.icp_mini_batch_size
: 20icp_subsample_keep_ratio
: 0.5icp_min_match_ratio
: 0.8icp_inital_translation_weighting
: 100.0icp_inital_rotation_weighting
: 100.0입력 변환 매개변수
use_tf_transforms
: truesensor_frame
및 world_frame
이 사용됩니다). false로 설정된 경우, 포즈는 변환 토픽을 통해 제공되어야 합니다.world_frame
: "world"sensor_frame
: ""T_B_D
invert_T_B_D
: falseT_B_D
를 사용하기 전에 반전할지 여부를 설정합니다.T_B_C
invert_T_B_C
: falseT_B_C
를 사용하기 전에 반전할지 여부를 설정합니다.출력 매개변수
output_mesh_as_pointcloud
: falsegenerate_mesh
서비스가 호출될 때마다 생성된 메쉬의 정점이 포인트클라우드로 mesh_pointcloud
토픽에 출력됩니다.output_mesh_as_pcl_mesh
: falsegenerate_mesh
서비스가 호출될 때마다 생성된 메쉬가 pcl::PolygonMesh
로 mesh_pcl
토픽에 출력됩니다.slice_level
: 0.5color_ptcloud_by_weight
: falsemesh_filename
: ""color_mode
: "color"mesh_min_weight
: 1e-4update_mesh_every_n_sec
: 0.0publish_tsdf_map
: falsepublish_esdf_map
: falsepublish_tsdf_info
: falsetsdf_pointcloud
, surface_pointcloud
, occupied_nodes
를 게시하는 기능을 활성화합니다.publish_pointclouds
:intensity_colormap
: "rainbow"intensity_max_value
: 100.0publish_traversable
: falsetraversability_radius
: 1.0이 번역이 도움이 되길 바랍니다! 추가 질문이 있으시면 언제든지 알려주세요.