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_sizemax_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_correctedpose_corrected_frame: pose_correctedicp_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_Dinvert_T_B_D: falseT_B_D를 사용하기 전에 반전할지 여부를 설정합니다.T_B_Cinvert_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이 번역이 도움이 되길 바랍니다! 추가 질문이 있으시면 언제든지 알려주세요.