[ROS] Somethings that I think it is important in ROS

ROS 관련 좋은 pdf 자료가 있어서 소개합니다.



책을 읽으면서, 제가 필요한 부분, 자세히 알고 싶은 부분을 읽어보았고 중요하다고 생각하는 것을 메모합니다.

Don’t reinvent the wheel, 만든 것 다시 만들 필요 없다.

The guiding principle underlying ROS is “don’t reinvent the wheel”. Many thousands of
very smart people have been programming robots for over fifty years—why not bring all
that brain power together in one place? Fortunately, the Web is the perfect medium for
sharing code. Many universities, companies and individuals now openly share their
ROS code repositories, and with free cloud space available through services such as
Google Code or GitHub, anyone can share their own ROS creations easily and at no
cost. – preface in ROS by example vol. 1

ROS Action

ros action은 요청, 그리고 요청에 대한 반환을 받는다. 중간에 취소도 가능하며, 어떻게 동작하는지 상태를 전달받을 수도 있다.

아래 예로는, 로봇이 목적지에 도착했는지 계속 토픽을 체크할 필요가 없다는 것이다. Action을 활용하여 도착하면 도착했다는 피드백을 보내면 된다. 그런 뜻이다.

The move_base package implements a ROS action for reaching a given navigation
goal. You should be familiar with the basics of ROS actions from the actionlib tutorials
on the ROS Wiki. Recall that actions provide feedback as progress is made toward the
goal. This means we no longer have to query the odometry topic ourselves to find out if
we have arrived at the desired location. – 76page in ROS by example vol. 1

Task Execution using ROS

로봇은 많은 일을 하게 된다. 단순히 얼굴을 보는 것만 하는게 아니라, 얼굴을 보고 말을 하고, 길을 안내해주고 사람을 쫓아가는 등

여러가지 일을 하게 된다. 이 때 각각의 일을 task라고 할 때, task를 잘 관리해서 수행하는게 “fully autonomous robot”에게는 중요하다.

As we discovered in Volume 1, it is relatively straightforward to program a robot to
execute a particular behavior such as face tracking, navigating between locations, or
following a person. But a fully autonomous robot will be expected to select its own
actions from a larger repertoire of behaviors depending upon the task at hand and the
current conditions. – task execution using ROS in ROS by example vol.2

task를 어떻게 잘 관리해서 수행할 것인가? 이 책에서는 2개의 framework를 소개한다.

In this chapter, we will learn how to use two different ROS-enabled task execution
frameworks: SMACH (using state machines and pronounced “smash”) and pi_trees
(behavior trees). Each approach has its strengths and weaknesses and one might seem
easier or harder depending on your programming background. But both methods
provide a more structured approach to task management than simply writing a large list
of if-then statements. – task execution using ROS in ROS by example vol.2

우선순위 – 우선순위는 높은거, 낮은거가 있다. 우선순위 높은게 호출되면, 우선순위가 낮은 작업은 잠깐 멈춘다.

정지와 재시작 – 작업은 정지되거나 재시작 될 수 있다. 우선순위에 따라

작업의 계층 구조 – 특정 작업은 몇 개의 서브 작업으로 구성된다.

조건 – 센싱 데이터, 특정 변수는 언제, 어떻게 작업이 수행되야하는지 결정한다.

동시성 – 여러 작업이 동시에 동작할 수 있다.

예시는 아래와 같다. 경비로봇이 돌아다닌다 (경비를 한다.) 배터리가 특정 이하가 되면, 로봇은 경비를 멈추고, 충전을 하러 간다.

충정이 완료되면, 로봇은 경비를 멈췄던 곳으로 가서 다시 경비를 수행한다. 이걸 task 관리로 수행한다.

Suppose our robot’s task is to patrol the perimeter of a square by navigating from corner
to corner in sequence. If the battery level falls below a certain threshold, the robot
should stop its patrol and navigate to the docking station. After recharging, the robot
should continue the patrol where it left off.




댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다