2025년 9월 15일 월요일

9.15~17 / 산업용 로봇 티칭 기초 - 울산대 박세영(5.19~21)- / AI 논문 / 메모장(LRL)

 https://draft.blogger.com/blog/post/edit/3102208567829848532/3368720404751777070

메모장 - https://n.lrl.kr/  ///    https://d.lrl.kr/

이미지를 보니 한국의 온라인 메모장 서비스인 "메모장"의 인터페이스네요! 5살 아이에게 설명하듯이 쉽게 사용법을 알려드릴게요.- 회원가입 -https://member.lrl.kr/login / c~~1147979// ㅊ~@

https://member.lrl.kr/profile

s모 서비스를 이용하기 위해서는 회원가입이 필요합니다. 회원가입을 통해 사용자들은 PC와 모바일 간에 메모를 손쉽게 동기화할 수 있습니다. 회원가입 절차는 간단합니다. s메모를 실행한 후 우측 하단 작업 표시줄에서 S메모 아이콘을 클릭하고 로그인 화면으로 이동하면 됩니다. 거기서 회원가입 버튼을 클릭하여 기본 정보를 입력하면 간단히 계정을 생성할 수 있습니다. 이 계정으로 로그인을 하게 되면, 작성한 메모와 파일들이 자동으로 동기화되어 언제 어디서든지 이전 작업물을 확인하고 수정할 수 있게 됩니다.

메모장 사용법 - 아주 쉽게!

1. 메모장이 뭐예요?

메모장은 인터넷에서 글을 쓸 수 있는 공책 같은 거예요. 컴퓨터나 휴대폰에서 언제든지 메모를 적을 수 있어요.

2. 위쪽 버튼들 (상단 메뉴)

  • 로그인: 내 계정으로 들어가기
  • LRL: 메모를 링크로 만들어서 다른 사람과 공유하기
  • 한국어: 언어 선택하기
  • 마이페이지: 내 정보 보기
  • 커뮤티: 다른 사람들과 이야기하기
  • 웹서비스: 다른 기능들 보기
  • 다크모드: 화면을 어둡게 만들기 (눈이 편해져요!)

3. 오른쪽 버튼들 (주요 기능)

  • 📄 미리보기: 내가 쓴 글이 어떻게 보일지 미리 확인하기
  • 🗂️ 임시저장: 글을 잠깐 저장해두기 (나중에 계속 쓸 수 있어요)
  • 🔗 압축화: 긴 링크를 짧게 만들어주기
  • ✏️ 작성: 새로운 메모 쓰기

4. 아래쪽 글쓰기 도구들

  • 굵게(B), 기울임(I), 밑줄(_): 글자를 예쁘게 꾸미기
  • 글자 크기(12): 글자를 크게 하거나 작게 하기
  • 색칠하기(A): 글자에 색깔 입히기
  • 목록 만들기: 쇼핑 목록처럼 항목별로 정리하기
  • 표 만들기: 시간표처럼 칸막이 만들기
  • 그림 넣기: 사진이나 그림 추가하기

5. 사용하는 순서

  1. 가운데 흰 박스(글쓰기 영역)를 클릭해요
  2. 키보드로 글을 써요
  3. 글자를 예쁘게 꾸미고 싶으면 위의 도구들을 사용해요
  4. 다 쓰면 "임시저장"이나 다른 저장 방법을 선택해요
  5. 다른 사람과 공유하고 싶으면 "LRL"로 링크를 만들어요

이렇게 하면 인터넷 어디서든 내 메모를 볼 수 있고, 친구들과도 쉽게 나눌 수 있어요! 마치 마법 공책 같죠? 😊

  1. 메모장

    2025년 8월 11일 · 에디터로 쉽게 저장, 공유하는 온라인 메모장.

  2. 에스메모 다운로드: 주요 기능, 설치 및 사용법, 복구 방법 완벽 ...

    3일 전 · 6. s메모 회원가입은? s메모를 이용하기 위해서는 간단한 회원가입이 필요합니다. 이 가입 과정은 복잡하지 않으며, 최소한의 정보만 입력하면 빠르게 계정을 생성할 수 있습니다. 이는 …

  3. 에스메모 다운로드와 주요 기능 | 설치 및 사용법 및 복구 …

    2024년 9월 14일 · s메모 회원가입은? s메모 서비스를 이용하기 위해서는 회원가입이 필요합니다. 회원가입을 통해 사용자들은 PC와 모바일 간에 메모를 …

  4. S메모 PC 다운로드 주요기능 연동방법 - Look for …

    S메모 사용법은 PC와 스마트폰 모두 동일하지만, 기기 별 연동을 위해 S메모 회원가입과 로그인을 반드시 진행 해야 합니다. S메모를 통해 메모한 작업물을 …

  5. 온라인 메모장 - 회원가입

    2025년 9월 8일 · 심플 회원가입 - 생성할 ID/PW만 입력하고, 개인정보 없이 빠르게 가입해 메모를 관리해요.

  6. 메모장 프로그램 에스(S)메모 무료 다운로드 설치방법<최신>

    2024년 7월 8일 · PC에 S메모를 설치하려고 하시나요? 걱정 마세요, 제가 친절하게 단계별로 설명해 드릴게요. 천천히 하단을 따라하시면 됩니다. 1. S메모 웹사이트 방문. 일단, S메모 공식 …

  7. 에스메모 다운로드 설치 방법 smemo 바탕화면 메모장 프로그램

    2024년 8월 17일 · 모니터에 붙어 있는 포스트잇을 고스란히 PC의 바탕화면으로 옮겨 놓은 프로그램을 메모장 프로그램이라고 합니다. 진짜 활용도 최강인 프로그램인데요. 저는 일정부터 …

  8. S메모 무료 다운로드 설치 (PC / 모바일) | 팁포유 | 당신을 위한 ...

    5일 전 · 스마트폰과 PC를 연동하여 사용하실 경우 각각의 기종에 다운로드하여 주십시오. 다운로드 하신 후 설치 파일을 실행시키시면 설치가 진행됩니다. 설치가 완료되면 자동으로 …

2025년 9월 14일 일요일

9.15~17 로봇 프로그래밍

 RootingforU님, 로봇 프로그래밍에서 초음파 센서 활용에 대해 궁금하시군요! RootingforU님께서 AGV 전진후진제어 코딩에도 관심이 많으시니, 초음파 센서 활용법을 아시면 더욱 폭넓은 로봇 제어가 가능해지실 겁니다. 음... 그럼, 초음파 센서를 로봇 프로그래밍에서 어떻게 활용하는지 자세히 설명해 드릴게요.

네, RootingforU님! 초음파 센서로 거리를 측정하는 기본 원리에 대해 더욱 자세히 설명해 드릴게요. 이 원리만 잘 이해하시면 다양한 로봇 프로젝트에 초음파 센서를 자신 있게 적용하실 수 있을 거예요.


음... 초음파 센서는 크게 두 가지 핵심적인 역할을 하는 부분으로 구성되어 있습니다. 하나는 **초음파를 발사하는 부분(송신부, Transmitter)**이고, 다른 하나는 **발사된 초음파가 반사되어 돌아오는 것을 감지하는 부분(수신부, Receiver)**입니다.


여기서 거리 측정의 기본 원리는 다음과 같습니다.


1.  **초음파 발사 (Trig)**:

    *   센서의 송신부에서 인간의 귀로는 들을 수 없는 높은 주파수의 소리, 즉 초음파를 짧은 순간 '삐' 하고 발사합니다.

    *   로봇 프로그래밍에서는 보통 마이크로컨트롤러(예: 아두이노)가 센서의 'Trig' 핀에 짧은 전기 신호(펄스)를 보내면, 센서가 이 명령을 받고 초음파를 발사합니다.


2.  **초음파 반사 및 감지 (Echo)**:

    *   발사된 초음파는 공기 중을 이동하다가 앞에 있는 물체(장애물)에 부딪힙니다.

    *   물체에 부딪힌 초음파는 마치 공이 벽에 부딪혀 튕겨 나오듯 다시 센서 방향으로 되돌아옵니다(에코).

    *   센서의 수신부는 이 되돌아온 초음파를 감지합니다. 이 신호는 보통 'Echo' 핀을 통해 마이크로컨트롤러로 전달됩니다.


3.  **시간 측정**:

    *   가장 중요한 부분인데요, 마이크로컨트롤러는 **초음파를 발사한 시점부터 되돌아온 초음파를 감지한 시점까지 걸린 총 시간**을 매우 정밀하게 측정합니다.


4.  **거리 계산**:

    *   초음파(소리)는 공기 중에서 일정한 속도로 이동한다는 과학적 사실을 이용합니다.

    *   우리가 측정한 시간은 초음파가 '갔다가' '돌아오는' 데 걸린 왕복 시간입니다. 따라서 실제 물체까지의 편도 거리는 이 왕복 시간의 절반만큼만 초음파가 이동한 것이 됩니다.


    *   **공식**:

        `거리 = (소리의 속도) × (왕복 시간) / 2`


    *   일반적으로 공기 중 소리의 속도는 약 340m/s 또는 0.034cm/μs (마이크로초당 센티미터)로 알려져 있습니다. 센서 제조사나 환경(온도, 습도)에 따라 미세하게 다를 수 있지만, 대부분 이 값을 사용합니다.


    *   **예시**: 만약 초음파가 왕복하는 데 1000 마이크로초(μs)가 걸렸다면,

        `거리 = (0.034 cm/μs) × (1000 μs) / 2 = 17 cm` 가 됩니다.


이처럼 초음파 센서는 소리의 속도와 왕복 시간을 활용하여 주변 물체까지의 거리를 아주 간단하고 효과적으로 측정하는 것이랍니다. RootingforU님께서 로봇에게 "앞에 10cm 안에 물체가 있으면 멈춰!"라고 명령하고 싶으실 때, 이 원리를 이용하면 로봇이 스스로 주변 상황을 인지하고 행동할 수 있게 되는 것이죠.

### **초음파 센서의 기본 원리**


초음파 센서는 사람의 귀에 들리지 않는 높은 주파수의 소리(초음파)를 발사하고, 이 초음파가 물체에 부딪혀 되돌아오는 시간(에코)을 측정하여 물체까지의 거리를 계산하는 센서입니다. 소리의 속도는 일정하므로, 소리가 왕복한 시간을 2로 나누어 거리를 도출해냅니다.


### **로봇 프로그래밍에서의 주요 활용 방법**


1.  **장애물 감지 및 회피**:

    *   **설명**: 로봇의 진행 방향에 있는 장애물을 실시간으로 감지하여 충돌을 방지하는 가장 기본적인 활용법입니다. 특정 거리 이내에 장애물이 감지되면 로봇을 멈추게 하거나, 방향을 바꾸어 장애물을 우회하도록 프로그래밍합니다.

    *   **예시**: 자율주행 로봇, AGV(Automated Guided Vehicle) 등.


2.  **정확한 거리 측정**:

    *   **설명**: 로봇이 특정 대상과의 정확한 거리를 측정해야 할 때 활용됩니다. 이를 통해 로봇이 원하는 위치에 정지하거나, 특정 작업을 수행하기 위한 기준점을 설정할 수 있습니다.

    *   **예시**: 로봇 팔이 물체를 집기 전 거리를 확인하거나, 주차 보조 로봇.


3.  **간단한 내비게이션 및 위치 파악**:

    *   **설명**: 여러 개의 초음파 센서를 로봇에 장착하여 주변 환경의 대략적인 지도를 그리거나, 벽과의 거리를 일정하게 유지하며 이동하는 데 사용될 수 있습니다. 복잡한 환경에서는 제한적이지만, 간단한 환경에서는 유용합니다.

    *   **예시**: 벽을 따라 이동하는 로봇, 좁은 공간 통과.


### **초음파 센서 프로그래밍의 일반적인 단계**


대부분의 마이크로컨트롤러(예: 아두이노 우노)에서 초음파 센서(예: HC-SR04)를 제어하는 단계는 다음과 같습니다.


1.  **트리거(Trig) 핀 활성화**: 초음파를 발사하도록 센서의 Trig 핀에 짧은 고전압 펄스를 보냅니다.

2.  **에코(Echo) 핀 시간 측정**: 초음파가 되돌아와 Echo 핀의 신호가 high로 바뀔 때부터 다시 low로 바뀔 때까지의 시간(duration)을 측정합니다.

3.  **거리 계산**: 측정된 시간(duration)과 소리의 속도를 이용하여 거리를 계산합니다.

    *   `거리(cm) = 측정 시간(μs) × 0.034 / 2`

        (여기서 0.034 cm/μs는 대략적인 공기 중 소리의 속도입니다.)

4.  **로봇 제어 로직 구현**: 계산된 거리가 특정 임계값(Threshold)보다 작으면(예: 30cm 이내) 로봇의 동작(멈춤, 좌회전, 우회전 등)을 제어하는 코드를 작성합니다.


### **고려해야 할 사항**


*   **센서의 한계**: 초음파 센서는 부드러운 재질(커튼, 스펀지 등)이나 경사가 있는 표면에서는 반사파가 약해져 정확도가 떨어질 수 있습니다. 또한, 감지 각도가 좁아 모든 방향을 커버하기 위해서는 여러 개의 센서가 필요할 수 있습니다.

*   **환경 영향**: 온도, 습도 등 환경 변화에 따라 소리의 속도가 미세하게 달라질 수 있습니다.

*   **다중 센서 간섭**: 여러 개의 초음파 센서를 동시에 사용할 경우, 서로의 초음파 신호가 간섭을 일으켜 오작동할 수 있으므로, 센서의 작동 타이밍을 조절하는 것이 중요합니다.


RootingforU님께서 아두이노를 사용해 AGV를 제어하고 계시다면, 이 초음파 센서와 연결하여 장애물 회피 기능을 추가하는 것부터 시작해보시면 큰 도움이 되실 겁니다. 더 궁금하신 점이 있으시면 언제든지 편하게 질문해주세요!


음... RootingforU님, 초음파 센서 외에 다른 거리 측정 센서들과의 차이점을 궁금해하시는군요! 아주 좋은 질문이십니다. 다양한 센서들의 특징을 아는 것은 로봇이나 자동화 시스템을 설계할 때 올바른 센서를 선택하는 데 매우 중요하죠.


제가 대표적인 거리 측정 센서 몇 가지와 초음파 센서의 차이점을 비교하여 설명해 드릴게요.


### **1. 초음파 센서 (Ultrasonic Sensor)**


*   **원리**: 초음파 발사 후 반사파를 감지하여 비행 시간(Time of Flight, ToF) 측정.

*   **장점**:

    *   **비용 효율적**: 비교적 저렴합니다.

    *   **색상, 투명도 영향 적음**: 물체의 색상이나 투명도, 표면의 광택 등에 비교적 영향을 덜 받습니다.

    *   **단순한 원리**: 구현 및 사용이 간단합니다.

*   **단점**:

    *   **감지 거리 및 정밀도 한계**: 장거리 정밀 측정에는 부적합하며, 근거리에서도 높은 정밀도는 기대하기 어렵습니다.

    *   **음파의 특성**: 부드러운 재질(스펀지, 천 등), 소리 흡수 물질, 특정 각도의 표면(경사면)에서는 오차가 발생하거나 감지가 어려울 수 있습니다.

    *   **빔 각도(Beam Angle)**: 넓은 원뿔 형태의 감지 영역을 가지므로, 좁은 공간 내의 특정 물체만 감지하기 어렵습니다. 다중 센서 사용 시 간섭 문제가 발생할 수 있습니다.

    *   **느린 응답 속도**: 소리의 속도가 빛보다 느리므로, 매우 빠른 움직임에는 적합하지 않습니다.


### **2. 적외선(IR) 거리 센서 (Infrared Distance Sensor)**


*   **원리**: 적외선 LED에서 적외선을 발사하고, 물체에서 반사되어 돌아오는 적외선을 포토트랜지스터(수신부)로 감지합니다. 센서와 물체 간의 거리에 따라 수신되는 빛의 양이나 각도가 달라지는 원리를 이용합니다. (주로 삼각측량 방식 활용)

*   **장점**:

    *   **비용 효율적**: 초음파 센서와 마찬가지로 저렴한 편입니다.

    *   **빠른 응답 속도**: 빛을 이용하므로 응답 속도가 빠릅니다.

    *   **소형화**: 크기가 작아 좁은 공간에 적용하기 좋습니다.

*   **단점**:

    *   **환경적 요인 영향 큼**: 주변 빛(태양광 등)의 영향을 많이 받습니다.

    *   **물체 표면 영향 큼**: 물체의 색상(특히 검은색)이나 재질(반사율), 투명도에 따라 측정 정확도가 크게 달라집니다. 검은색 물체는 적외선을 흡수하여 감지가 어렵거나 불가능할 수 있습니다.

    *   **측정 범위 제한**: 일반적으로 측정 범위가 매우 짧습니다 (수 cm에서 수십 cm).

    *   **비선형적 출력**: 출력 전압이 거리에 대해 비선형적인 경우가 많아 보정이 필요할 수 있습니다.


### **3. 레이저 거리 센서 (LIDAR - Light Detection and Ranging, 또는 레이저 ToF 센서)**


*   **원리**: 레이저 빔을 발사하고, 이 빔이 물체에 반사되어 돌아오는 시간(ToF), 또는 위상차, 강도 등을 측정하여 거리를 계산합니다.

*   **장점**:

    *   **높은 정밀도와 정확도**: 매우 정확하고 정밀한 거리 측정이 가능합니다.

    *   **긴 측정 거리**: 수십 미터에서 수백 미터까지 넓은 범위의 측정이 가능합니다.

    *   **좁은 빔 각도**: 레이저 빔이 좁아 특정 물체를 정밀하게 조준하여 측정할 수 있습니다.

    *   **물체 표면 영향 적음**: 적외선 센서보다 물체 표면 색상이나 재질의 영향을 덜 받습니다 (물론 완전히 자유롭지는 않습니다).

    *   **3D 매핑 가능**: 여러 레이저 빔을 이용하거나 센서를 회전시켜 주변 환경의 3D 지도를 생성할 수 있습니다.

*   **단점**:

    *   **고비용**: 다른 센서들에 비해 가격이 매우 비쌉니다.

    *   **먼지, 안개 등 환경 영향**: 대기 중의 먼지, 안개, 비 등에 의해 레이저 빔이 산란되어 성능에 영향을 받을 수 있습니다.

    *   **물에 약함**: 투명한 물체(유리, 물) 감지가 어렵거나 오류를 낼 수 있습니다.


### **4. 카메라 기반 거리 측정 (Stereo Vision, Structure from Motion, ToF Camera)**


*   **원리**:

    *   **스테레오 비전**: 두 대의 카메라로 물체를 동시에 촬영하고, 두 이미지의 시차(Disparity)를 이용하여 거리를 계산합니다.

    *   **ToF 카메라**: 물체에 빛(적외선)을 쏜 후 반사되어 돌아오는 빛의 비행 시간을 측정하여 각 픽셀의 깊이 정보를 얻습니다.

*   **장점**:

    *   **풍부한 정보**: 거리 정보뿐만 아니라 물체의 형태, 색상 등 시각적인 정보를 함께 얻을 수 있습니다.

    *   **3D 매핑 및 환경 이해**: 복잡한 환경에 대한 깊이 있는 이해와 3D 모델링이 가능합니다.

    *   **비접촉 측정**: 광범위한 영역을 비접촉으로 측정합니다.

*   **단점**:

    *   **높은 연산량**: 실시간으로 데이터를 처리하기 위해 높은 수준의 프로세싱 능력이 요구됩니다.

    *   **환경 영향**: 주변 조명 조건에 영향을 많이 받습니다. 스테레오 비전은 특징점 추출이 어려운 균일한 표면(벽 등)에서 성능이 저하될 수 있습니다.

    *   **복잡한 구현**: 센서 자체의 가격도 비쌀 수 있으며, 소프트웨어 구현이 매우 복잡합니다.


### **각 센서의 적합한 용도**


*   **초음파 센서**: 저렴한 비용으로 간단한 장애물 감지, 근거리 비접촉 스위치, 수위 측정 등.

*   **적외선 센서**: 근거리 장애물 감지(로봇의 바닥, 벽 감지), 라인 트레이싱 등.

*   **레이저 센서 (LiDAR)**: 자율주행, 로봇 내비게이션, 고정밀 산업용 측정, 3D 스캐닝 등.

*   **카메라 기반 센서**: 복잡한 환경 이해, 로봇 비전, 증강 현실, 얼굴 인식 등.


RootingforU님께서는 AGV나 로봇 프로그래밍에 관심이 많으시니, 어떤 목적과 환경에서 로봇을 사용하시는지에 따라 가장 적합한 센서를 선택하시는 것이 중요합니다. 예를 들어, 단순한 장애물 회피라면 초음파 센서만으로도 충분할 수 있지만, 정밀한 맵을 만들거나 복잡한 환경을 탐색해야 한다면 LiDAR나 카메라 기반 센서가 필요할 수 있겠지요.


궁금증이 조금 해소되셨을까요? 또 다른 궁금한 점이 있으시면 언제든 질문해주세요!



ALLBOT





 이 이미지는 로봇 플랫폼을 보여주고 있네요! 검은색 원형 섀시에 여러 개의 바퀴(mecanum wheels로 보임)와 전자 부품들이 조립된 모습입니다.

주요 구성 요소들:

  • 중앙: Raspberry Pi 같은 싱글보드 컴퓨터 (녹색 보드)
  • 좌우: 파란색 모터 드라이버 보드들
  • 상단: Arduino 호환 보드 (파란색)
  • 연결: 다양한 리본 케이블과 점퍼 와이어들
  • 바퀴: 4개의 mecanum wheel (전방향 이동 가능)

ELI5 조립 순서 (5살 아이에게 설명하듯이):

1단계: 기본 준비 🔧

"레고 만들기 전에 블록들을 정리하듯이, 먼저 모든 부품들을 준비해요!"

  • 검은색 원판(섀시) 준비
  • 바퀴 4개, 모터 4개 준비
  • 컴퓨터 보드들(Raspberry Pi, Arduino) 준비

2단계: 바퀴 달기 🚗

"자동차에 바퀴를 다는 것처럼!"

  • 원판 가장자리 4곳에 모터 브래킷 나사로 고정
  • 각 모터에 특별한 바퀴(mecanum wheel) 연결
  • "이 바퀴는 마법 바퀴예요! 앞뒤, 좌우, 심지어 대각선으로도 갈 수 있어요!"

3단계: 컴퓨터 두뇌 설치 🧠

"로봇의 머리(뇌)를 달아줘요!"

  • 원판 중앙에 Raspberry Pi(녹색 보드) 나사로 고정
  • "이것은 로봇의 똑똑한 뇌예요! 사람처럼 생각할 수 있어요!"

4단계: 모터 제어기 달기 ⚡

"바퀴를 움직이게 하는 힘센 친구들을 달아요!"

  • 양쪽에 파란색 모터 드라이버 보드 고정
  • "이것들은 로봇의 근육이에요! 바퀴들에게 '빨리 돌아!' '천천히 돌아!' 라고 명령해요!"

5단계: Arduino 센서 보드 📡

"로봇의 귀와 눈을 달아요!"

  • 상단에 Arduino 보드(파란색) 설치
  • 브레드보드도 함께 고정
  • "센서들을 연결해서 로봇이 주변을 볼 수 있게 해줘요!"

6단계: 전선 연결하기 🌈

"모든 친구들이 서로 이야기할 수 있게 전화선을 연결해요!"

  • 리본 케이블로 컴퓨터들 연결
  • 점퍼 와이어로 모터들과 센서들 연결
  • 빨간선(+), 검은선(-), 다른 색깔선들(신호)
  • "빨간선은 힘을 주고, 검은선은 힘을 받고, 다른 선들은 메시지를 전달해요!"

7단계: 전원 연결 🔋

"로봇이 움직일 수 있게 밥(전기)을 줘요!"

  • 배터리나 전원 어댑터 연결
  • 전원 스위치 확인

마지막: 테스트! 🎉

"로봇이 제대로 만들어졌는지 확인해봐요!"

  • 전원 켜기
  • 각 바퀴가 돌아가는지 확인
  • 프로그램 업로드해서 움직임 테스트

이 로봇은 옴니휠(전방향 이동) 로봇으로 보이며, 아마도 자율주행이나 원격조종이 가능한 고급 로봇 플랫폼인 것 같아요! 정말 멋진 프로젝트네요! 🤖✨

실습 2-7: Navigation (길 찾아 가기)

 실습 2-7: Navigation (길 찾아 가기)

SLAM을 통해서 지도가 완성되었다면 네비게이션 기능으로 모바일 로봇을 목적지로 이동시켜

보자. 모바일 로봇이 목적지까지 이동해야 하므로 이전 실습과 동일하게 Host PC와 모바일

로봇은 같은 네트워크상에 연결 되어있어야 한다.

(참고: ‘roscore’, ‘teleop’ 노드가 실행되는 터미널을 제외하고, SLAM 과정에서 실행되었던

나머지 프로세스들을 모두 종료한다. 터미널을 완전 종료하고 새로 실행하는 것을 권장한다.)

n Navigation을 위한 ‘launch’ 파일

Jetson 디바이스의 ‘~/catkin_ws/src/allbot/launch’ 경로에 있는 ‘navigation.launch

파일을 편한 방법으로 확인한다.

n Navigation 실행해 보기

• Host PC에서 터미널을 열고 ‘roscore’ 실행.

• Host PC에서 새로운 터미널을 열고 ‘teleop_twist_keyboard’ 노드 실행.

• Host PC에서 새로운 터미널을 열고 ssh 명령어로 모바일 로봇에 연결한 후

bringup.launch’ 실행.

• Host PC에서 새로운 터미널을 열고 ssh 명령어로 모바일 로봇에 연결한 후

navigate.launch’ 실행

<


IMU(Inertial Measurement Unit) / SLAM

 IMU(Inertial Measurement Unit)

§ 관성측정 장치

• 가속도계(Accelerometer), 자이로스코프(Gyroscope)로 구성

u 6축 센서 = triaxial accelerometer + three-axis gyroscope

u 9축 센서 = 6축 센서 + three axis magnetic field (3축 지자기 센서)

• 가속도 : accelerometer 센서를 통해 측정

u 순간적인 가속, 진동, 충격 등 동적 힘이 발생했을 때 움직임의 변화 감지. (x, y, z 방향)

u 기울기와 중력 가속도에 따라 가속도 측정값이 변화, 이를 통해 기울어진 각도 측정

• 각속도 : gyroscope 센서를 통해 측정

u 회전 변화량 측정, 측정값을 적분하면 각도 자체가 생성 (Pitch, Roll, Yaw)

• 지자기 센서

u 지구 자기장의 세기(자기선속)와 방향(자북을 기준으로 틀어진 각도)을 측정

모터 PID 제어

 모터 PID 제어

§ 비례-적분-미분 제어기(Proportional-Integral-Differential controller)

§ 피드백(feedback)제어기

• 제어하고자 하는 대상의 출력 값(output)을 측정하고,

원하는 설정 값(Set Point)과 비교하여 오차(error)를 계산

이 오차 값을 이용하여 제어에 필요한 제어 값 산출

§ 비례(Proportional)항:

• 현재 상태에서의 오차값의 크기에 비례한 제어작용

§ 적분(Integral)항:

• 정상상태(steady-state) 오차를 없애는 작용

§ 미분(Differential)항:

• 출력 값의 급격한 변화에 제동을 걸어 오버슛(overshoot)을 줄이고 안정성(stability)을 향상

9.14~실습 1-10: 원격 개발환경 구축/아주 쉽게 푼 설명 (ELI5)

 

아주 쉽게 푼 설명 (ELI5)

실습 1-10: 원격 개발환경 구축

# firefox

# 리눅스에서 _  가상환경 설치- 시연 ㅡ


제공해주신 이미지는 로봇이나 자율주행 차량 등에서 사용되는 SLAM(Simultaneous Localization and Mapping, 동시 위치추정 및 지도작성) 기술 중, 특히 "Cartographer"라는 고급 시스템의 구성 흐름도입니다. 이를 아주 쉽게, 초등학생에게 설명하듯 풀어드리겠습니다.


---


### 아주 쉽게 푼 설명 (ELI5)


1. **센서가 주변을 봐요**  

   로봇이 주변을 알기 위해 여러 센서들을 사용해요. 예를 들면 레이저로 주변 물체와의 거리(몇 미터 떨어져 있는지)를 재는 센서와, 로봇이 얼마나 움직였는지 알려주는 센서(움직임 센서, IMU 데이터)가 있어요.


2. **센서 데이터 정리하기**  

   센서가 보내주는 정보는 아주 많기 때문에, 컴퓨터가 이해하기 쉽도록 쓸모있는 정보만 골라내요. 마치 큰 퍼즐 조각 중 중요한 것만 남기는 것처럼요.


3. **로봇 위치 알아내기**  

   로봇이 지금 어디 있는지, 어느 방향을 보고 있는지 예측하는 역할이 있어요. 이걸 'Pose Extrapolator'라고 부르고, 보조로 IMU(움직임 데이터)를 사용해 더 정확하게 위치를 추측해요.

• ROS는 유클리드 좌표계로 구성

- 오일러 좌표 : X, y, z, roll, pitch, yaw

- Quaternion 좌표 x, y, z, w (주로 로봇의 heading 정보 출력에 사용)

- URDF(Unified Robot Description Format)를 통해 각 조인트별

연결 정보 및 좌표계 설정 /  UDRF에 정의된 링크 연결 정보가 우선

2025년 9월 13일 토요일

ROS-2 9.13~ 원격 개발환경 구축 / WSL ???

 실습 1-10: 원격 개발환경 구축

n 원격 Host용으로 사용할 PC가 Windows OS일 경우 ‘Virtual Box”를 사용하여 “ubuntu

20.04(Guest OS)” 설치, 활용한다.

(참고: Windows 11 OS의 WSL을 사용해도 가능 하지만 복잡한 설정으로 인하여 Virtual

Box환경에서 Ubuntu를 설치하여 원격 Host PC로 사용하는 것을 권장한다.)

n 아래 사이트에서 Windows OS용(Host OS) Virtual Box 설치 파일 다운로드 받는다.

https://www.oracle.com/kr/virtualization/technologies/vm/downloads/virtualboxdownloads.

html

n “VirtualBox Extension Pack”과 “VBox GuestAdditions”도 같이 다운로드 받는다.

(참고: 위 다운로드 받아야 하는 파일들은 “실습_파일/1-10_원격개발환경구축”에 담아

놓았다.)

n Virtual Box 설치 및 Guest OS 환경 세팅

• Window PC에 Virtual Box 설치

다운로드 받은 ‘Virtual Box”설치 파일(예: VirtualBox-7.0.14-161095-Win.exe)을 더블

클릭해서 설치를 시작한다. 아래와 같은 화면에서 ‘Next’ 버튼을 누르고 ‘Finish’ 버튼이

나타날 때까지 설치를 진행한다.

• ‘Virtual Box” 기본 설치가 완료되면 Extension Pack(예:

Oracle_VM_VirtualBox_Extension_Pack-7.0.14.vbox-extpack)도 설치한다.

• Virtual box설치가 완료되면 실행하고, 아래와 같이 ‘새로 만들기’ 버튼을 누른다.

• 아래 화면과 같이 “가상머신 이름”과 “저장될 위치(폴더)” 그리고 ubuntu OS

image(iso)를 선택하고 ‘다음’ 버튼을 누른다. 이름에 ubuntu가 들어가면 자동으로

종류와 버전이 Linux – Ubuntu로 변경된다.

• 새로 만들 가상환경의 기본메모리와 프로세서 개수를 선택하고 ‘다음’을 누른다.

• “지금 새 가상 하드 디스크 만들기”를 선택하고 디스크 크기를 여유 있게 설정한 후

‘다음’ 버튼을 누른다. (아래 이미지는 100.00GB로 표시되어 있지만, Host PC 사양이

부족한 경우에는 30GB 정도로도 설정해도 충분하다.)

• 설정한 내용을 확인하고 제대로 설정이 됐다면 ‘완료’ 버튼을 누른다.

• ‘가상 머신 만들기’가 완료되면 ‘Virtual box’ 초기 화면(Virtual Box 관리자)의 ‘설정’

버튼을 누른다.

• ‘일반’ -> ‘고급’에서 클립보드 공유와 드래그 앤 드롭을 양방향으로 변경한다.

양방향으로 변경하면 HostPC와 Virtual Box의 가상 머신 간의 데이터 공유가

가능해진다.

• ‘설정’ –> ‘시스템’에서 부팅 순서를 아래와 같이 바꿔준다.

• ‘설정’ –> ‘네트워크’에서 아래와 같이 ‘어댑터에 브리지’로 변경하고 ‘확인’ 버튼을

누른다.

• Window PC에 다음과 같이 폴더를 생성한다. (경로: D:\share)

• ‘설정’ –> ‘공유 폴더’ 에서 빨간색으로 표시 된 부분을 눌러 공유 폴더를 추가한다.

• ‘설정’ –> ‘공유 폴더’ 에서 아래와 같이 공유 폴더에 윈도우 PC에 생성한 폴더 경로를

입력하고, 확인을 누른다.

• ‘설정’ –> ‘공유 폴더’ 에서 아래와 같이 공유 폴더가 추가된 것을 확인한다.

• 설정이 완료되면 ‘Virtual Box 관리자’에서 ‘시작’ 버튼을 눌러 생성한 가상머신을

실행한다. 그러면 잠시 후 아래 화면처럼 ‘Ubuntu’ 설치화면이 나타난다.

Install Ubuntu”를 눌러 가상 머신 환경에서 ubuntu linux OS 설치를 시작한다.

• Keyboard layout설정 화면에서 “Continue” 버튼을 누른다.

• 아래 화면처럼 “Minimal Installation”을 선택하고 “Continue” 버튼을 누른다.

• “Installation type”에서 “Erase disk and install Ubuntu”를 선택하고 “Install Now”버튼을

누른다.

• 아래와 같은 화면이 나타나면 “Continue” 버튼을 누른다.

• 국가 설정화면에서 “Seoul”이 선택되었는지 확인하고 “Continue” 버튼을 누른다.

• 사용자 계정을 묻는 창이 나타나면 ‘Name’, ‘user name’, ‘password’를 입력하고

‘Continue’ 버튼을 누른다. (입력한 ID, PW는 반드시 기억해 둔다. ID/PW를 ‘nvidia’로

입력하는 것을 권장)

• Ubutu Linux가 설치 완료되는 동안 대기하고, 설치가 완료되면 “Restart now” 버튼을

누른다.

• “Please remove the installation medium, then press ENTER” 문구가 나오면 Enter키를

누른다. (삽입한 iso 이미지 파일을 제거하라는 의미인데 virtual box는 자동해제 해주기

때문에 Enter를 누르면 된다.)

• 만약 아래 화면처럼 검은색 이미지가 계속 나타나면 ‘X’표시를 눌러 시스템 전원 끄기를

누른 후 다시 시작한다.

• 아래와 같이 ‘Password’를 입력하라는 화면이 나타나면, 위에서 입력한 Password를

입력한다.

• Ubuntu가 정상적으로 부팅한후 아래와 화면과 같이 “Ubuntu 22.04.5 LTS upgrade”에

대한 팝업창이 나타나면 ‘Don’t Upgrade’ 버튼을 누른다.

• 그리고 아래 화면에서 ‘OK’ 버튼을 누른다.

• ‘Connect Your Online Accounts” 묻는 창에서 ‘skip’ 버튼을 눌러 무시한다.

• ‘Livepatch’ 창에서 ‘Next’ 버튼을 눌러 무시한다.

• ‘Help improve Ubuntu’ 창에서 ‘No, don’t send system info’를 선택하고 ‘Next’버튼을

누른다.

• ‘Privacy’를 묻는 창에서 ‘Next’ 버튼을 누른다.

• 마지막으로 ‘You’re ready to go!’ 창이 나오면 ‘Done’ 버튼을 눌러 Ubuntu 설정을

마무리한다.

• 그러면 아래와 같이 ubuntu 20.04 desktop 화면이 나타난다.

• Ubuntu 바탕 화면이 나타나면 ‘장치’ –> ‘게스트 확장 CD 이미지 삽입’을 누른다.

• 아래와 같은 창이 뜬다면 ‘Run’버튼을 누르고, Password를 입력해서 설치한다.

• 만약 Ubuntu 22.0x로 업그레이드를 묻는 창이 나타나면 반드시 ‘Don’t Upgrade’

버튼을 눌러 무시한다.

• 아래 화면과 같이 “Press Return to close this window…”가 뜬다면 ‘Enter’를 누른다.

게스트 확장 CD 이미지 삽입을 완료하면 아래와 같은 기능을 사용할 수 있다.

- 마우스 포인터 통합 (Mouse Pointer Integration)

- 공유 폴더 (Shared Folders)

- 더 나은 비디오 지원 (Better Video Support)

- 심리스 윈도우 (Seamless Windows)

- 클립보드 공유 (Shared Clipboard)

- 시간 동기화 (Time Synchronization)

• Host PC의 Ubuntu 20.04 설치 및 설정이 모두 완료되면 터미널을 열고 아래 명령어를

실행해서 rebooting 해준다.

$ sudo reboot

• 파일 관리자(Nautilus)를 열고, 공유 폴더가 있는지 확인한다.

• 공유 폴더를 들어가보면 사용자가 vboxsf 그룹에 없어서 다음과 같은 에러가 발생한다.

• 아래와 같은 명령어를 실행하여 vboxsf 그룹에 사용자를 추가한다.

$ sudo usermod -G vboxsf -a nvidia

(참고 : Virtual Box를 설치할 때 사용자명을 nvidia가 아닌 다른 이름으로 설치했다면

nvidia가 들어가는 자리에 설정한 사용자명을 입력하면 된다.)

• 아래와 같은 명령어를 실행하여 현재 사용중인 아이디가 vboxsf 그룹에 들어가있는지

확인한다.

$ cat /etc/group

• Virtual Box를 reboot 한다.

$ sudo reboot

• Window PC에 테스트 할 텍스트 파일을 만들고, 공유 폴더 경로와 Virtual Box 내의

공유 폴더 안에 같은 파일이 있는지 확인한다. Window PC에 있는 파일을 Virtual

Box로 옮겨야 할 때 공유 폴더를 사용하면 편리하게 옮길 수 있다.

n 원격 Host PC(Virtual Box + Ubuntu)에 ROS 설치

• ROS 패키지 서버 등록

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc)

main" > /etc/apt/sources.list.d/ros-latest.list'

• ROS 패키지 서버 키 등록

$ sudo apt install curl

$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo

apt-key add -

• 패키지 서버 업데이트

$ sudo apt update

• ROS Noetic 설치

$ sudo apt install ros-noetic-desktop-full (권장)

또는 아래와 같이 기본(desktop) 패키지를 설치할 수도 있다.

$ sudo apt install ros-noetic-desktop

아래 화면처럼 설치여부를 묻는 화면이 나타나면 ‘Y’ + Enter키를 눌러 계속

진행한다.

• ROS 환경변수 추가 (설치된 ROS 기본 패키지를 시스템에 등록하기 위한 과정이다.)

$ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc

(참고: 홈 폴더의 ‘.bashrc’파일을 텍스트 편집기로 열고, 맨 마지막 라인에 아래

스크립트를 추가해도 된다. )

source /opt/ros/noetic/setup.bash

• 터미널에 환경변수 반영(또는 터미널을 종료하고 다시 실행한다)

$ source ~/.bashrc

• ROS 패키지에 대한 주요 환경변수가 잘 설정되었는지 확인

$ export | grep ROS

ROS Node (Topic, Service, Action)통신방식 - eli 5질문 /

 ROS Node (Topic, Service, Action)통신방식: - 

ROS(Robot Operating System)의 통신 방식을 5살 아이에게 설명하듯이 쉽게 풀어보겠습니다!

ROS를 우체국으로 생각해보세요 📮

ROS는 로봇의 여러 부분들이 서로 대화할 수 있게 해주는 우체국 같은 시스템입니다.


1. Topic (토픽) - 방송국 📻

"라디오 방송"처럼 생각해보세요!

  • 방송국(Publisher): 뉴스를 계속 방송합니다
  • 청취자(Subscriber): 원하는 채널에 맞춰서 듣습니다
  • 특징: 방송국은 누가 듣는지 모르고, 그냥 계속 방송해요

예시:

  • 로봇의 카메라가 "여기 장애물 있어요!" 하고 계속 방송
  • 움직임 담당 부분이 그 방송을 듣고 "아, 피해가야겠네!"
카메라 → [장애물 정보] → 움직임 제어
센서 → [온도 데이터] → 화면 표시

2. Service (서비스) - 전화 통화 ☎️

"전화로 질문하고 답받기"같아요!

  • 질문자(Client): "지금 몇 시야?" 라고 전화해서 물어봄
  • 답변자(Server): "3시 30분이야!" 라고 정확히 답해줌
  • 특징: 질문하면 반드시 답이 와야 해요. 일회성이에요.

예시:

  • 로봇: "현재 배터리 몇 퍼센트야?"
  • 배터리 관리자: "75%야!"
  • 로봇: "고마워!" (통화 끝)
로봇 → "배터리 상태?" → 배터리 시스템
로봇 ← "75% 남음" ← 배터리 시스템

3. Action (액션) - 택배 주문 📦

"택배 주문하고 배송 추적하기"같아요!

  • 주문자(Client): "이 물건을 저기로 옮겨줘" 라고 주문
  • 배송자(Server): 일을 시작하고 중간중간 "지금 50% 했어요" 라고 알려줌
  • 특징: 시간이 오래 걸리는 일이고, 중간에 취소도 가능해요

예시:

  • 로봇에게 "거실에서 부엌으로 가줘" 명령
  • 로봇이 가면서 계속 알려줌: "10% 완료", "50% 완료", "도착!"
  • 중간에 "그만해!" 하면 멈출 수 있어요
명령: "거실→부엌 이동"
진행상황: 10% → 30% → 70% → 100% 완료!
(중간에 취소 가능)

언제 뭘 사용할까요? 🤔

Topic 사용:

  • 센서 데이터 (온도, 거리 등)
  • 계속 업데이트되는 정보
  • "방송"하듯 여러곳에 알려야 할 때

Service 사용:

  • 간단한 질문-답변
  • 즉시 결과가 나오는 작업
  • "지금 상태가 어때?" 같은 질문

Action 사용:

  • 시간이 오래 걸리는 작업
  • 진행상황을 알고 싶은 일
  • 중간에 멈출 수 있어야 하는 일

쉽게 기억하는 방법:

  • Topic = 라디오 📻 (계속 방송)
  • Service = 전화 ☎️ (질문하고 답받기)
  • Action = 택배 📦 (주문하고 배송추적)

이렇게 세 가지 방식으로 로봇의 여러 부분들이 서로 협력해서 일을 처리하는 거예요!

자동차 전면 유리 제상(Defrost/De-icing) 성능”**을 ANSYS Fluent로 해석 ///

도움말  좋은 화면 캡처예요 👍 이 이미지는 ANSYS Fluent → Setup 단계의 General 화면 이고, **“해석의 뼈대(종류·시간·좌표계)를 결정하는 곳”**입니다. 아래에서 화면에 보이는 기능을 영역별로 정확히 설명할게요. 🔧 ...