roslaunch voxblox_ros rgbd_dataset.launch
roslaunch voxblox_ros rgbd_dataset.launch voxel_size:=0.15
launch
파일은 먼저 ROSBAG 파일을 재생하여 기록된 데이터를 불러옵니다. voxblox_ros
의 TSDF 서버 노드를 실행하여 포인트 클라우드 데이터를 처리하고, TSDF 기반의 3D 지도를 생성launch
파일은 두 개의 주요 노드를 실행하는 데 사용됩니다:rosbag
을 재생하는 노드 (player
).voxblox_ros
패키지의 TSDF 서버 노드 (voxblox_node
).tsdf_voxel_size
$(arg voxel_size)
에서 가져온 값을 사용tsdf_voxels_per_side
TSDF 데이터는 여러 개의 블록으로 나누어 저장
tsdf_voxels_per_side
가 16이라면, 한 블록은 (16 \times 16 \times 16) 복셀로 구성됩니다. voxel_carving_enabled
color_mode
설명: TSDF 맵에서 색상을 사용하는 모드를 설정하는 파라미터
상세 설명:
color_mode
는 복셀에 색상 정보를 포함할지 여부를 결정
각 복셀에 RGB 색상 값을 저장할 수 있음
use_tf_transforms
false
로 설정되어 있어, TF 변환을 사용하지 않습니다.use_tf_transforms
가 true
로 설정되면, TSDF 맵 생성 과정에서 TF 프레임 간의 변환 정보를 이용하여 포인트 클라우드를 올바르게 정렬false
로 설정된 경우, 사용자가 명시적으로 지정한 좌표 변환만을 사용use_tf_transforms
를 True
로 설정하여 로봇 중심 좌표계에서 RealSense 카메라의 장착 위치를 고려하려면, 다음 단계를 따르면 됩니다:use_tf_transforms
파라미터 설정roslaunch voxblox_ros rgbd_dataset.launch use_tf_transforms:=true
카메라와 로봇의 좌표계 변환 정보를 제공해야 합니다. 이는 보통 URDF 파일 또는 TF broadcaster를 통해 이루어집니다.
URDF 파일 작성 및 저장:
robot_description.urdf
파일을 작성하여 /home/user/urdf/
경로에 저장합니다.ROS 파라미터 서버에 업로드:
rosparam load
명령어를 사용하여 URDF 파일을 ROS 파라미터 서버에 업로드TF 트리 생성:
robot_state_publisher
노드를 실행하여 TF 트리를 생성하고 ROS 시스템에 게시TF 트리 확인:
rqt_tf_tree
또는 rviz
를 사용하여 TF 트리를 확인이 단계를 따르면, 로봇 중심 좌표계에서 realsense
센서의 위치와 방향을 고려한 TF 트리가 생성됩니다.
URDF 파일 작성:
<?xml version="1.0"?>
<robot name="my_robot">
<!-- Base link -->
<link name="base_link"/>
<!-- Realsense link -->
<link name="realsense_link"/>
<!-- Joint between base_link and realsense_link -->
<joint name="base_to_realsense" type="fixed">
<parent link="base_link"/>
<child link="realsense_link"/>
<origin xyz="0.1 0.0 0.1" rpy="0 0 0"/>
<!-- xyz: 장착 위치, rpy: 회전 (롤, 피치, 요) -->
</joint>
</robot>
파일 저장:
robot_description.urdf
라는 이름으로 저장합니다.urdf
폴더에 저장한다고 가정합니다.mkdir -p ~/urdf
nano ~/urdf/robot_description.urdf
ROS 파라미터 서버에 업로드:
rosparam load
명령어를 사용하여 URDF 파일을 ROS 파라미터 서버에 업로드rosparam load ~/urdf/robot_description.urdf robot_description
robot_description
이라는 이름으로 URDF 파일의 내용을 ROS 파라미터 서버에 업로드robot_state_publisher
노드를 실행하여 TF 트리 생성robot_state_publisher
노드 실행:
robot_state_publisher
는 로봇의 상태를 기반으로 TF 트리를 생성하고, 이를 ROS 시스템에 게시하는 역할을 합니다.rosrun robot_state_publisher robot_state_publisher
robot_state_publisher
가 로봇의 상태를 읽고, base_link
와 realsense_link
사이의 TF 변환을 포함한 TF 트리를 생성하여 ROS 시스템에 게시TF 트리 확인:
rviz
또는 rqt_tf_tree
를 사용하여 TF 트리가 올바르게 게시되었는지 확인할 수 있습니다.rosrun rqt_tf_tree rqt_tf_tree
rqt_tf_tree
를 실행하면, TF 트리의 구조를 시각적으로 확인할 수 있습니다. base_link
와 realsense_link
사이의 변환이 올바르게 표시되어야 합니다.TF broadcaster 사용 방법:
노드를 통해 직접 TF broadcaster를 작성하여, 카메라와 로봇 사이의 변환을 실시간으로 게시할 수도 있습니다.
#include <ros/ros.h>
#include <tf/transform_broadcaster.h>
int main(int argc, char** argv){
ros::init(argc, argv, "my_tf_broadcaster");
ros::NodeHandle node;
tf::TransformBroadcaster br;
tf::Transform transform;
ros::Rate rate(10.0);
while (node.ok()){
transform.setOrigin( tf::Vector3(0.1, 0.0, 0.1) );
tf::Quaternion q;
q.setRPY(0, 0, 0);
transform.setRotation(q);
br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "base_link", "realsense_link"));
rate.sleep();
}
return 0;
}
base_link
와 realsense_link
사이의 TF 변환이 실시간으로 게시됩니다.roslaunch
명령어를 사용해 런치 파일을 실행합니다. roslaunch voxblox_ros rgbd_dataset.launch use_tf_transforms:=true
이 명령어는 use_tf_transforms
를 true
로 설정하여 실행합니다.
voxblox_node
는 camera/depth/points
와 함께 제공되는 TF 변환을 이용하여 카메라의 위치와 방향을 반영할 수 있습니다.update_mesh_every_n_sec
설명:
상세 설명:
verbose
min_time_between_msgs_sec
설명: 두 메시지 사이의 최소 시간 간격을 설정하는 파라미터로, 여기서는 0.2초로 설정되어 있습니다.
상세 설명:
max_ray_length_m