Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Wiredwisdom

Sensor Fusion 본문

Autonomous Driving/Turtlebot3

Sensor Fusion

Duke_Wisdom 2024. 7. 3. 15:14

 

 

필요한 장비 및 소프트웨어

 

1. TurtleBot3: 로봇 플랫폼

2. 카메라: 예를 들어, 리얼센스(RealSense) 또는 다른 USB 카메라

3. 라이더(LIDAR): 기본적으로 TurtleBot3에 포함

4. ROS: Robot Operating System

5. SLAM 패키지: 예를 들어, gmapping 또는 cartographer

6. 이미지 처리 패키지: 예를 들어, cv_bridge, image_transport

 

 

설정 및 실행 단계

 

 

1. 카메라 설치 및 설정

카메라를 TurtleBot3에 장착하고, 카메라 드라이버를 설치합니다. 리얼센스 카메라의 경우 다음과 같이 설치할 수 있습니다:

 

sudo apt-get install ros-<distro>-realsense2-camera

2. 카메라 데이터 수집

카메라 데이터를 수집하려면 ROS 노드를 실행합니다:

roslaunch realsense2_camera rs_camera.launch

3. 라이더 데이터 수집

기본적으로 TurtleBot3의 LIDAR 데이터는 turtlebot3_bringup 패키지를 통해 수집됩니다:

roslaunch turtlebot3_bringup turtlebot3_robot.launch

 

4. SLAM 실행

LIDAR 데이터를 이용하여 SLAM을 실행합니다. 예를 들어, gmapping을 사용할 수 있습니다:

roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping

 

5. 이미지와 LIDAR 데이터 융합

데이터를 융합하려면, 각각의 데이터를 처리하는 노드를 작성합니다. 예를 들어, cv_bridge를 사용하여 카메라 데이터를 처리하고, LIDAR 데이터를 융합할 수 있습니다.

아래는 간단한 예제 코드입니다:

 

#!/usr/bin/env python

import rospy
from sensor_msgs.msg import Image, LaserScan
from cv_bridge import CvBridge
import cv2

class SensorFusion:
    def __init__(self):
        self.bridge = CvBridge()
        self.image_sub = rospy.Subscriber("/camera/color/image_raw", Image, self.image_callback)
        self.lidar_sub = rospy.Subscriber("/scan", LaserScan, self.lidar_callback)
        self.image = None
        self.lidar = None

    def image_callback(self, msg):
        self.image = self.bridge.imgmsg_to_cv2(msg, "bgr8")

    def lidar_callback(self, msg):
        self.lidar = msg

    def process_data(self):
        if self.image is not None and self.lidar is not None:
            # 이미지와 LIDAR 데이터 융합 처리
            cv2.imshow("Camera", self.image)
            cv2.waitKey(1)

if __name__ == '__main__':
    rospy.init_node('sensor_fusion_node')
    sf = SensorFusion()
    rate = rospy.Rate(10) # 10 Hz
    while not rospy.is_shutdown():
        sf.process_data()
        rate.sleep()

RViz에서 시각화

RViz를 사용하여 카메라 이미지와 LIDAR 데이터를 동시에 시각화할 수 있습니다.

rosrun rviz rviz

RViz에서 이미지 토픽(/camera/color/image_raw)과 LIDAR 토픽(/scan)을 추가하여 실시간 데이터를 확인할 수 있습니다.

'Autonomous Driving > Turtlebot3' 카테고리의 다른 글

SLAM  (0) 2024.07.04
Ros Structure  (0) 2024.07.03
First Procedure [Setup~Keyboard]  (0) 2024.07.03
wireless setup - Ubuntu 20.4 Server  (0) 2024.07.02
'roscore' Error - 20.04 Ver, No GUI  (0) 2024.07.01