티스토리 뷰

2021. 10. 1. 22:43

 

안녕하세요

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

 

SLAM 강의 14번째. Cleaning Robot about how to avoid walls


*이 포스팅은 목원대학교 양정연 교수님의 SLAM강의 유튜브 영상을 보고 제작되었음을 밝힙니다.

출처: 14강. Cleaning Robot about how to avoid walls

14강. Cleaning Robot about how to avoid walls

 

🎉강의요약

1. 청소 로봇을 결정론적 방법으로는 제어할 수 없다.

2. 다양한 결정론적 전략을 이용해서 시뮬레이션을 해보지만 벽에 부딪히거나 벽을 잘 따라가지 못한다.

3. 이는 Slip 현상이 일어나기 때문인데 마찰력이 작을경우 많이 발생한다.

 

<Cleaning Robot in a Stochastiv World ex/robot/crobot series>

30도 간격으로 초음파 센서 3개 배치.
초음파 센서는 근거리에서 측정이 잘 된다.
(시뮬레이션에서는 측정이 잘 된다는 가정)

 

<Basic Functions>

초음파 센서를 통해 거리값을 받고
track()은 사용자의 코드
process는 로봇을 움직이게 하는 코드

자코비안 행렬을 이용해 로봇 제어.
바퀴의 반지름, 축간거리 등 정의.

!노이즈!
바퀴의 각속도에 랜덤한 노이즈 추가

0.3N(0,1): 정규분포에 0.3의 노이즈를 추가한 분포를 가지게 된다.
> 0.3 표준편차를 가지면 흔들리는 모습으로 운동.

 

<Test1: ex/robot/crobot>

에러가 많은 움직임을 확인 가능.
go라는 직진 명령어를 구동하게 되면 흔들리면서 전진하고 벽에 부딪힌다. 부딪힌 후 각도를 보면 각도가 틀어진 것을 알 수 있다.

 

<Test2: ex/robot/crobot2>
mode라는 변수를 이용해 전진과 좌회전을 결정한다. 초기에는 mode가 0이고 전진하지만 초음파 센서값이 1보다 작아지면 mode에 1로 할당되며 좌회전을 하게 되는 코드
벽에 부딪힌 후에는 밀려서 더이상 회전이 되지 않는다.
그리고 초음파 센서값이 1.5보다 크게 되면 mode가 0이 되므로 전진하게 된다.
> 하지만 이 전략은 벽에 걸리게 되는 문제가 있다.
> 그렇다면 부딪히기 전에 90도를 회전하면? Test3 예제 확인

 

<Test3: ex/robot/crobot3>
Mode값에 따라 (0~2) 다른 동작 수행.
0: 전진
1: 90도 각도 추가
2: 회전

코드를 구동해보면 벽에 부딪혀 회전은 하지만 결국 빠져나오지 못한다. Slip이 일어나서 벽에 부딪히기 전에 회전하는 전략이 통하지 않는다.

>> 그렇다면 좀 더 멀리 있을때 회전을 하면 어떻까?

 

<Test: ex/robot/crobot4>
초음파 센서 값 제한값을 1->3으로 키우면?
> 벽에 부딪히지 않고 운전은 되지만 벽을 잘 따라가지 못한다.
>> 로봇은 똑바로 간다고 계산하지만 실제로는 조금 각도가 틀어지기 때문.

> 초음파 센서값의 최소값을 5로 키우면 벽에 부딪히지 않지만 벽을 따라가기는 힘들다.

 

<Stochastic Environment for Cleaning Robots: What We Have to Change?>
청소로봇은 벽을 잘 따라가면서 청소를 하는 것이 중요한데 로봇이 계산한 각도와 실제 각도는 다르다는 큰 문제가 있다.
> 이는 Stochstic한 세계관이기 때문!

 

<Wheel Dynamics>
이러한 현상이 생기는 원인을 역학적으로 풀어보기
Iα = T
마찰력이 있기 때문에 바퀴가 움직일 수 있다.

 

<Probabilistic Process is required for Mobile Robot rather than any other Robotics fields>
마찰이 어느 정도 있어야 앞으로 굴러간다. 굴러가게 하기 위해서는 ra = α 수식을 만족해야 한다. 마찰이 별로 없다면 Slip현상이 일어난다.

 

<Rolling VS Slip>
앞으로 가는 가속도 a와 반지름 r, 바퀴의 각가속도α
a ≠ rα 가 되게 되면 Slip현상 발생
Slip할 때 α가 크다. 눈밭에서 바퀴가 빠르게 돌아가는 현상.

 

<Slip is one of the STRONG Noises>
Slip현상은 바퀴가 접점이 작기 때문.

 

 

피드백은 언제나 환영합니다.😊

틀린 부분 있다면 지적해주시고 도움이 되었다면 댓글 공감 눌러주세요.

LIST
댓글