티스토리 뷰

2021.6.7 23:01

 

안녕하세요

프로그래밍을 배우는 빛나는 샤트입니다.

 

AIFFEL 해커톤3 4주차 진행 현황 및 후기.

 

  • 기간: 2021.05.10 ~ 2021.06.18
  • 주제: 특정 1인을 추적하며 따라가는 자율주행 모바일 로봇 구현(위고 코리아와 협업, 하드웨어 장비 및 기술 지원)
  • 인원: 총 5명
  • 역할: 팀장, Tracking 알고리즘 개발, ROS를 활용한 로봇 구동 & 알고리즘 연동

 

1. 4주차 목표: Test 영상을 이용해 deepsort(추적 모델) + ROS -> 로봇 바퀴 제어

 

2. 4주차 업무 키워드

- ROS 기초

- ROS Topic

- ROS /cmd_vel

- rospy(ROS + Python)

- deepsort + ROS

 

3. ROS 관련 글

아래 글에 정리함.

[Object Tracking Robot]Study 내용 정리 (5) - ROS 기초 (tistory.com)

 

[Object Tracking Robot]Study 내용 정리 (5) - ROS 기초

2021.6.1 00:21 안녕하세요 프로그래밍을 배우는 빛나는 샤트입니다. 자율주행 프로젝트 We-Go 진행하면서 공부한 내용들을 간략히 정리한 글입니다. 1. 주제: ROS 기초 2. 내용 workspace 생성 새로운 패

shinest-programming.tistory.com

 

4. ROS를 이용한 바퀴 제어

ROS를 이용한 로봇 바퀴 제어

가장 기본적인 전진과 후진을 반복하는 Publisher를 작성해 구동해 본 결과이다.

아래 코드는 전진만 하는 코드이다.

tt.linear.x는 양수일 경우 전진, 음수일 경우 후진한다.

여기에 1을 할당하면 계속 전진하는 코드를 발행하고 ROS는 이것을 받아 로봇의 바퀴가 전진할 수 있도록 명령을 전달한다.

이렇게 나머지 변수들도 값을 지정해 주면 우리가 원하는 구동을 구현할 수 있다!

#! /usr/bin/env python

import rospy
from geometry_msgs.msg import Twist

class scout_pub_basic():
    def __init__(self):
        rospy.init_node("scout_pub_basic_name", anonymous=False)
        self.msg_pub = rospy.Publisher(
            '/cmd_vel',
            Twist,
            queue_size = 10
        )

    def sendMsg(self):
        tt = Twist()
        tt.linear.x = 1
        # tt.linear.y = 0
        # tt.linear.z = 0
        # tt.angular.z = 0
        self.msg_pub.publish(tt)

if __name__ == "__main__":      
    while not rospy.is_shutdown():
        scout = scout_pub_basic()
        rate = rospy.Rate(10)
        scout.sendMsg()
        rate.sleep()

 

 

5. DeepSORT + ROS

ROS를 통해 로봇을 제어하는 방법을 알았으니 이제 DeepSORT의 결과물(bbox)을 이용해 로봇을 제어할 수 있지 않을까 생각함.

실제로 아래와 같이 width, height의 값에 따라 'go', 'back'를 출력했고 로봇 제어도 성공했다. (바퀴가 잘 돌아갔다.)

 

그리고 추가로 rospy.Rate(숫자)의 값에 따라 FPS가 변하는 것을 확인함.

rospy.Rate()는 괄호 안의 숫자만큼의 Hz를 가지고 통신한다. 즉 Hz가 높을 수록 동일한 시간에 더 많은 통신을 주고 받는 다는 의미. (왜냐하면 Hz는 진동수로 1초에 몇 회 진동했는지를 나타낸다. 100Hz는 1초에 100번 진동)

 

*왼쪽부터 2Hz, 100Hz, 200Hz의 결과이다. FPS가 대략 5 -> 30 -> 45임을 확인했다.

LIST
댓글