<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://hs-p.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://hs-p.github.io/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-07-12T23:13:35+09:00</updated><id>https://hs-p.github.io/feed.xml</id><title type="html">Hansol Park</title><subtitle>Personal academic homepage of Hansol Park, focused on robot learning, dexterous manipulation, physical AI, and AI for robotics.</subtitle><entry><title type="html">Intel Realsense Camera ROS2</title><link href="https://hs-p.github.io/posts/Camera/" rel="alternate" type="text/html" title="Intel Realsense Camera ROS2" /><published>2024-09-19T13:00:00+09:00</published><updated>2024-09-19T13:00:00+09:00</updated><id>https://hs-p.github.io/posts/Camera</id><content type="html" xml:base="https://hs-p.github.io/posts/Camera/"><![CDATA[<h1 id="intel-realsense-camera-installation">Intel Realsense Camera Installation</h1>

<p>Project를 진행하다 보면 Intel Realsense Camera 사용하는 경우가 많다.</p>

<p>Github에서 간단하게 사용하는 방법을 Review 해보고자 한다.<br />
Github Link : <a href="https://github.com/IntelRealSense/realsense-ros.git">Realsense 공식 Wrapper</a><br />
<img src="/posts/camera/camera0.png" alt="Image" /></p>

<p>일단, 본 패키지를 clone 하기 전 Readme를 쭉 따라가 보도록 하자.</p>

<p><img src="/posts/camera/camera1.png" alt="Image" /></p>

<p>Ubuntu 22.04 환경 기준, 총 3개의 Step을 밟아야 한다.</p>

<ol>
  <li>
    <p>Ros2 설치<br />
<img src="/posts/camera/camera2.png" alt="Image" /><br />
Ros2 설치 Reference : <a href="https://docs.ros.org/en/humble/Installation.html">Ros2 공식 설치</a></p>
  </li>
  <li>
    <p>Realsense Camera를 사용하기 위한 SDK 설치<br />
<img src="/posts/camera/camera3.png" alt="Image" /><br />
Camera SDK를 설치할 때부터, 사용하고 있는 환경에 따라 설치 종류가 달라진다.<br />
크게 3가지 정도로 볼 수 있는데,</p>

    <h3 id="공식-wrapper에서도-강조하듯-가능한-한-가지-옵션만-선택할-것-conflict">공식 Wrapper에서도 강조하듯, 가능한 한 가지 옵션만 선택할 것. (Conflict)</h3>

    <p>2-1. Jetson SBC를 사용하는 경우 : <a href="https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_jetson.md">Jetson 환경 설치</a><br />
2-2. ROS apt를 활용한 설치</p>

    <ul>
      <li><code class="language-plaintext highlighter-rouge">sudo apt install ros-&lt;ROS_DISTRO&gt;-librealsense2\*</code><br />
대부분 이 커맨드를 활용한다. ROS_DISTRO에는 본인 ROS 버전을 넣으면 된다.<br />
ex) ROS2 Humble의 경우 : ROS_DISTRO = <code class="language-plaintext highlighter-rouge">humble</code></li>
    </ul>

    <p>2-3. 직접 Build</p>

    <ul>
      <li>jetson Tx2를 활용했을 때에는 직접 Build를 하는 방식을 사용했다.</li>
      <li>이후 Jetson Orin AGX를 활용할 때에는 1번을 활용했다.</li>
      <li>여기서 3번에 대한 설명은 <a href="https://github.com/IntelRealSense/librealsense.git">여기</a>로 마친다.</li>
    </ul>
  </li>
  <li>
    <p>Realsense Package 설치<br />
3-1. Binary 활용.(간단한 Check 용으론 용이, 그러나 수정이 불가능함.)<br />
3-2. Git clone 후 진행하기.</p>

    <ul>
      <li>
        <p>First Step : Git clone을 위해 Ros2 Workspace 내 src 폴더로 들어가기.<br />
Change Directory를 진행해 ~/작업장소/src폴더에 들어왔다면 아래의 명령어를 입력하자.</p>

        <p><code class="language-plaintext highlighter-rouge">git clone https://github.com/IntelRealSense/realsense-ros.git -b ros2-master</code><br />
초기 Branch는 ros2-master가 Master Branch로 설정되어 있어 -b 뒷 부분은 사실 없어도 된다.</p>
      </li>
      <li>
        <p>Second Step : Dependency 설치하기.<br />
<strong>Directory를 상위 Workspace로 바꾼다.</strong> 이 과정을 제대로 진행하지 않으면 rosdep 인식이 실패할 가능성이 있다.</p>
      </li>
    </ul>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    sudo apt-get install python3-rosdep -y
    sudo rosdep init # "sudo rosdep init --include-eol-distros" for Foxy and earlier
    rosdep update # "sudo rosdep update --include-eol-distros" for Foxy and earlier
    rosdep install -i --from-path src --rosdistro $ROS_DISTRO --skip-keys=librealsense2 -y
</code></pre></div>    </div>

    <ul>
      <li>Third Step : Build 후 Source<br />
<code class="language-plaintext highlighter-rouge">colcon build</code> 명령어를 입력해 패키지를 빌드한다.<br />
이 과정에서 생기는 오류에 대한 리뷰는 다른 게시글에서 다루도록 하겠다.</li>
    </ul>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ROS_DISTRO=&lt;YOUR_SYSTEM_ROS_DISTRO&gt;  # set your ROS_DISTRO: iron, humble, foxy
source /opt/ros/$ROS_DISTRO/setup.bash
cd ~/ros2_ws
. install/local_setup.bash
</code></pre></div>    </div>

    <p>위 코드는 간단한 내용이므로 자세한 내용은 생략한다.</p>
  </li>
</ol>

<h1 id="usage">Usage</h1>

<p>가장 많이 사용하는 명령어 : <code class="language-plaintext highlighter-rouge">ros2 run realsense2_camera realsense2_camera_node</code><br />
본인의 경우, 해당 패키지에서 카메라 노드가 켜진 이후, yolo v8을 통해 Object Detection 하는 과정을 Launch 파일에 진행해두었다.<br />
<a href="https://github.com/HS-P/Prototype_Military/blob/main/prototype_military/src/prototype_move/launch/prototype_detect_launch.py">실제 프로젝트 내 Launch 파일</a></p>

<p>다양한 Parameter들을 조정하고 싶다면, <code class="language-plaintext highlighter-rouge">ros2 launch realsense2_camera rs_launch.py</code> 를 실행할 때, 해당 패키지 내 Parameter 값들을 조정하면 된다.<br />
내 기억 상으로, 더 Detail하게 Parameter 값들을 조정하고 싶다면 내부 C++ 파일을 손보면 됐었던 기억이 있다. (실제 FPS 조절 및 해상도, 카메라 각도 등 조정했던 기억이 있다.)</p>

<p><img src="/posts/camera/camera4.png" alt="Image" /></p>

<p>(모터 동작 코드 병행 전) 카메라를 통한 Yolo 객체 탐지</p>]]></content><author><name></name></author><category term="2024" /><category term="ROS" /><summary type="html"><![CDATA[Intel Realsense Camera Installation]]></summary></entry><entry><title type="html">Dynamixel</title><link href="https://hs-p.github.io/posts/Dynamixel/" rel="alternate" type="text/html" title="Dynamixel" /><published>2024-08-20T00:00:00+09:00</published><updated>2024-08-20T00:00:00+09:00</updated><id>https://hs-p.github.io/posts/Dynamixel</id><content type="html" xml:base="https://hs-p.github.io/posts/Dynamixel/"><![CDATA[]]></content><author><name></name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">방학 MRC 준비(1)</title><link href="https://hs-p.github.io/posts/MRC2/" rel="alternate" type="text/html" title="방학 MRC 준비(1)" /><published>2024-07-21T13:00:00+09:00</published><updated>2024-07-21T13:00:00+09:00</updated><id>https://hs-p.github.io/posts/MRC2</id><content type="html" xml:base="https://hs-p.github.io/posts/MRC2/"><![CDATA[<h1 id="국방로봇-경진대회-research-diary-3">국방로봇 경진대회 Research Diary #3</h1>

<p>이번 학기 점수는 4.45로, 과에서 2등을 기록했다.<br />
(목표한 바는 못 채워 아쉬웠지만 그래도 만족할만한 결과다.)</p>

<h2 id="부제--학기-후-계획">부제 : 학기 후 계획</h2>

<p>7월에 이르러, 본인은 Computer Vision에 본격적으로 돌입했다.<br />
그러나, 가장 큰 문제가 발생했다.<br />
부품이 7월 22일에 되어서야 주문이 완료된다는 이야기를 들었고, 사실상 8월이 되어서야 물품을 받을 수 있다는 걸 알게 되었다.</p>

<p>문제는 7월 28일까지 제출해야하는 보고서 때문이다. 국방로봇 경진대회 예선 보고서 제출이 7월 28일까지이므로, 모든 부품이 도착하지 않은 상태에서 영상 및 보고서를 작성해야 하는 상황이 온 것이다.</p>

<p>그냥 하면 되겠지만, 문제는 예선 보고서에 작성한 내용이 정확한지, 명확한 지에 대해 잘 모르는 것이 문제다.<br />
(혹여 내가 잘못된 내용을 작성하게 될까봐 걱정이다.)</p>

<p><img src="/posts/mrc007.png" alt="Image" /></p>

<p>하드웨어는 도색 작업을 정상적으로 진행하고 있다.</p>

<hr />

<h3 id="jetson-tx2">Jetson Tx2</h3>

<p>일단, 지금까지 Jetson Tx2의 단점의 문제가 부각되었다.<br />
나는 Jetson Tx2가 EOL(End Of Life)인건 알고 있었다. 사실상, 크게 지원 없이 Ubuntu 18.04 환경에서 개발하면 된다고만 생각하고 있었다.<br />
(어쩌면, 오히려 더 효율적일 수도 있을 것이라 생각했다.)</p>

<p>그러나, OPENCV4, YOLO V8,V9와 V10이 출시되면서 상황은 달라졌다. 코드가 훨씬 압축되고, 효율적인 Filtering을 제공하며,수많은 기능들이 추가되고 있다.</p>

<p>Jetson Tx2에서는 이를 사용할 수 없는게 가장 큰 문제이다. Ubuntu 18.04에서는 Python도 3.6까지 지원하며, 강제로 3.7로 업그레이드하자 오히려 다른 패키지들도 충돌나며 오류가 발생했다.</p>

<p>그럼 Ubuntu 20.04를 사용하면 되는 것이 아니냐는 이야기가 있을 수도 있지만, 이는 불가능하다.<br />
Jetpack을 강제로 업그레이드를 하지 않는 한 Ubuntu 20.04는 불가능하고, Jetpack 역시 Nvidia에서 제공해주는 SDK이므로 함부로 업그레이드를 할 수 없었다.</p>

<p><img src="/posts/mrc009.png" alt="Image" /></p>

<p>Jetson Tx2는 YOLO의 고버전 지원 대상에서 제외되었다.<br />
(using Pytorch)</p>

<p>물론, 그렇다고 해서 포기하진 않았다.</p>

<p><img src="/posts/mrc010.png" alt="Image" /></p>

<p><em>출처 : <a href="https://jstar0525.tistory.com/57">Bechmark</a></em></p>

<p>Nano와 Tx2는 Yolo 저 버전 기준 두 배 가까이 차이난다. 일부 모델에 한해서는 두 배 이상 나기도 하는데, Xavier와 Orin의 가격을 생각한다면 가장 효율적인 모델은 역시 Tx2일 것이다.</p>

<p>본 연구실에서 가지고 있는 건 본 필자 소유의 Tx2와 Nano, Orin이다. Orin이 타 대회에서 사용되므로, Nano를 사용하기보다는 Orin을 사용하는 편이 훨씬 효율적일 것이다.</p>

<p>자, 그렇다면 여기서 내가 할 수 있는 건 무엇일까?<br />
Jetson Tx2에서 Yolo 저버전의 필터를 사용하면 될 것이라고 생각했다.<br />
Nano의 필터가 아무리 좋다 한듯 기존 성능이 낮으므로, Jetson Tx2(버전이 낮아 조금은 어려울 수 있겠지만) 잘 사용할 수 있을 것이라고 생각한다.</p>

<hr />

<h4 id="yolo-v4-project-진행">Yolo V4 Project 진행</h4>

<hr />

<p>사실, 이미 Jetson Tx2의 Ubuntu를 두 번은 날려먹었다.</p>

<ol>
  <li>용량 부족. (32GB Micro SD Card 사용 중)</li>
  <li>Library 충돌 (강제 Install 과정)</li>
</ol>

<p>그래서 <a href="https://docs.ros.org/en/dashing/Related-Projects/Intel-ROS2-Projects.html">Ros2 Project</a>에서 Intel Camera Project를 진행하기로 했다.<br />
제우스 경진대회는 9월이고, 예선이 통과해야 로봇이 도착해서 카메라를 사용하므로 그때까지는 D455 카메라가 연구실에 1대 남아서 사용이 가능하다.<br />
그래서 사용을 했고, D455 Camera를 사용하기 위한 ROS2 wrapper를 설치했다.</p>

<p>이후, Object Detection을 진행하기로 했다. ROS2 Darknet, Yolov4가 최대였고, Yolo V5이상과 V8 이상의 Ref를 찾아보았으나 정상적으로 작동하기에는 어려웠다. (Python, Cuda 등 버전의 차이로 인해)</p>

<p><img src="/posts/mrc011.png" alt="Image" /><br />
<em><a href="https://github.com/intel/ros2_object_analytics">Realsense Github</a></em></p>

<p>해당 프로젝트를 정상적으로 따라가도 어려운 일들이 많았다. 이유는 간단하다.</p>

<p>내 환경은 Computer (Ubuntu 22.04, Ros2 Humble)이고,<br />
SBC의 환경은 Jetson Tx2 (Ubuntu 18.04, Ros2 Dashing)이다.</p>

<p>서로 Node를 공유하며 Topic을 Susbscribe해 Computer에서 ssh로 연결해 확인하는 과정이 생각보다 원활하지 않았는데 Qos 설정에서 Depth값을 늘리고, Image Raw를 Susbscribe 하는 것을 Compressed로 변경하여 훨씬 더 FPS를 늘렸다.(말로는 한 줄에 끝났지만, 실제로는 2주 가까이 걸렸다.)</p>

<p>결과값은 아래와 같다.</p>

<p><img src="/posts/mrc012.jpg" alt="Image" /></p>

<p>기본 Dataset으로, 이제 해야할 일에 대한 Ref는 Notion에 정리해 두었다.</p>

<ol>
  <li>Dataset에 사용할 사진 찍기 (Vision Marker, Box, 국방부 옷) 각 Class별 1000장</li>
  <li><a href="https://hipolarbear.tistory.com/41">Colab과 Darknet으로 YOLO 학습시키기</a></li>
  <li><a href="https://hipolarbear.tistory.com/38">학습시킬 Dataset Labeling In roboflow</a></li>
</ol>]]></content><author><name></name></author><category term="2024" /><category term="MRC" /><summary type="html"><![CDATA[국방로봇 경진대회 Research Diary #3]]></summary></entry><entry><title type="html">학기 중 MRC 준비</title><link href="https://hs-p.github.io/posts/MRC1/" rel="alternate" type="text/html" title="학기 중 MRC 준비" /><published>2024-07-14T13:00:00+09:00</published><updated>2024-07-14T13:00:00+09:00</updated><id>https://hs-p.github.io/posts/MRC1</id><content type="html" xml:base="https://hs-p.github.io/posts/MRC1/"><![CDATA[<h1 id="국방로봇-경진대회-research-diary-2">국방로봇 경진대회 Research Diary #2</h1>

<p>이번 학기 박한솔의 가장 큰 목표는 <strong>과탑</strong>이다. (물론, 2등으로 실패했다.)<br />
2학년 2학기 배틀로봇과 함께 시험을 조금 소홀히했던 나 자신에 너무 실망했고,<br />
나 자신에 대한 자존감 극복과 등록금을 줄여 이번 국방로봇 경진대회에 크게 기여하고 싶었다.</p>

<h2 id="부제--학기-중-진행-사항-기록">부제 : 학기 중 진행 사항 기록</h2>

<p>국방로봇 경진대회 기록 일지에 관한 내용이다.<br />
개강 이후 <strong>‘공학설계 I’</strong> 과목과 연계하여 국방로봇 경진대회를 준비했다.</p>

<p>큰 로드맵은 아래와 같이 제시했다.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center"> </th>
      <th style="text-align: center">하드웨어</th>
      <th style="text-align: center">소프트웨어</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">4월</td>
      <td style="text-align: center">초안 설계 완료(~V0.4)</td>
      <td style="text-align: center">제어기 펌웨어 설계</td>
    </tr>
    <tr>
      <td style="text-align: center">5월</td>
      <td style="text-align: center">초안 출력 및 피드백</td>
      <td style="text-align: center">ROS2 ACTION/TOPIC 설계</td>
    </tr>
    <tr>
      <td style="text-align: center">6월</td>
      <td style="text-align: center"><strong>시험 준비</strong></td>
      <td style="text-align: center"><strong>시험 준비</strong></td>
    </tr>
    <tr>
      <td style="text-align: center">7월</td>
      <td style="text-align: center">도색 및 배선 작업</td>
      <td style="text-align: center">Computer Vision / 모터 제어</td>
    </tr>
    <tr>
      <td style="text-align: center">8월</td>
      <td style="text-align: center"><strong>PROTOTYPE 1.0 완성</strong></td>
      <td style="text-align: center"><strong>자율 주행 및 수동 주행</strong></td>
    </tr>
    <tr>
      <td style="text-align: center">9월</td>
      <td style="text-align: center">피드백 및 개선</td>
      <td style="text-align: center">최적화</td>
    </tr>
    <tr>
      <td style="text-align: center">10월</td>
      <td style="text-align: center">최종 본선</td>
      <td style="text-align: center">최종 본선</td>
    </tr>
  </tbody>
</table>

<p>Manipulator는 시뮬레이션 및 그립 연구만을 진행하기에 제외했다.</p>

<hr />

<h3 id="2주-단위-회의">2주 단위 회의</h3>

<p>회의는 2주 단위, 시험 기간에는 제외하였으며, 공학 설계와 병행하였다.<br />
약 6번의 회의를 진행했다. (추가 회의 제외)</p>

<p>너무 방대한 내용을 담고있으며, 디테일한 내용에 대해서는 앞으로의 게시글에서 <strong>생략</strong>하겠다.<br />
<em>(박한솔 본인이 진행한 사항에 대해서만 저술)</em></p>

<hr />

<h4 id="1-pid-제어-및-펌웨어-공부">1. PID 제어 및 펌웨어 공부</h4>

<hr />

<p><a href="https://www.youtube.com/watch?v=feOraVfw80U">Turtlebot을 활용한 PID 제어</a></p>

<p>간단한 PID 제어 코드를 작성하여 Ros2 Topic Programming을 진행했다.<br />
영상 내부에서 간단하게 확인할 수 있는 부분은, 오차 범위 10cm 내로 진행하였다.</p>

<p>본 주행 코드는 전체 자율주행으로 이루어졌으며, <strong>Nonholonomic Constraint</strong>인 <strong>Double-Wheeled-Mobile-Robot(DWMR)</strong> 이다.<br />
그러나, 우리가 실제로 제어하는 <strong>Angular Velocity, Linear Velocity of x,y,z</strong>에 대한 부분을 이해하기 위해서는 실제 펌웨어를 뜯어보아야 했다.</p>

<p>펌웨어 내 식에 대해서 논문 식들을 참고해가며 각 바퀴에 대한 제어를 통하여 Turtlebot이 작동하고 있음을 알 수 있게 되었다.<br />
이 과정에서 각도의 변화에 대해서 Reference를 찾지 못한 부분이 있어서 많은 시간을 해맸던 기억이 있다.</p>

<p>그리하여, 본인은 Turtlebot을 판매한 ROBOTIS의 Debate에 들어가 펌웨어 내 계산식에 대해 질문해 보기도 했고, 역학 및 기구학 교수님께 여쭤보기도 하였으며, 지도교수님께 여쭤보며 <strong>문제</strong>들을 해결해 나갔다.<br />
<em>(물론, 각도에 대한 문제는 여전히 완벽히 해결하지 못한 채 찜찜하게 남아있다.)</em></p>

<ul>
  <li>
    <p>“그렇다면 난 무엇을 할 수 있을까?” 라는 대답에, 나는 내 입맛에 맞춰 펌웨어를 변경하기로 했다.</p>
  </li>
  <li>Arm Architecture을 사용하는 RaspberryPI4</li>
  <li>AMD Architecture을 사용하는 Personal Computer(통칭 PC)</li>
  <li>aarch64를 사용하는 Jetson SBC</li>
</ul>

<p>위 과정 중, PC에서는 Arduino IDE를 사용하여 OpenCR에 Fimrware 업로드가 가능하다.<br />
그러나, 실제로 연산을 처리하고 ROS2의 핵심 주축이 되는 Rasbpberry4에서 작동을 하기 위해서는 Binary File을 .sh파일로 만들어 업로딩 후 사용해야 한다.<br />
실제로 Arduino IDE에서 제공하는 Binary로 변환하는 파일을 사용하여 우리 로봇에 적합한 펌웨어로 변경하여 사용하는 방법을 채택하려 하였으나 실패하였다.<br />
<em>(Binary 파일 Upload를 하게 되면 Turtlebot Topic Launch 과정 중 OPENCR 인식을 정지하는 문제가 발생하였고, 이를 해결할 수 없었다.)</em>
<img src="/posts/mrc001.png" alt="Image" /></p>

<p><em>(펌웨어 내부 코드를 공부하는 과정, PPT SLIDE, 04/30)</em></p>

<p><img src="/posts/mrc002.png" alt="Image" /></p>

<p><img src="/posts/mrc003.png" alt="Image" /></p>

<p><em>(손으로 풀어가며 계산하는 과정, 공학 설계 세미나 때 모든 과정을 풀이로 진행했다.)</em></p>

<hr />

<h4 id="2-메타로봇-연구회mars-가입">2. 메타로봇 연구회(MARS) 가입</h4>

<hr />

<p><img src="/posts/mrc006.png" alt="Image" /></p>

<p>메타로봇 연구회 가입은 이번 국방로봇 경진대회 준비의 중요한 요소 중 하나였다.<br />
로봇을 만들 때 가장 중요한 건 무엇일까?</p>

<p>기술? 지식? 전부 맞지만, 가장 중요한 건 <strong>돈</strong> 이다.<br />
로봇은 돈이 매우 많이 들어가는 분야이다.<br />
동시에, 복합적인 모든 기술들이 집약되어 하나의 결과물을 만드는 과정이라고 생각한다.<br />
로봇이 아름다운 이유는 이 모든 복합적 요소가 문제 없이 작동할 때, 로봇 움직이 움직인다는 울림을 주기 때문이다.</p>

<p>자본적 문제를 해결하기 위해서도, 그리고 우리의 <strong>로봇 개발</strong>에 더 발전을 박차기 위해서도 <strong>메타로봇연구회</strong>에 가입하기로 결정했다.</p>

<p>메타로봇 연구회는 우리 팀원 전원이 가입 완료했으며, <strong>국방로봇 부문 팀장</strong>을 맡아 우리 팀 4명을 이끌기로 했다.</p>

<hr />

<h4 id="로봇-slamnavigation">로봇 SLAM/NAVIGATION</h4>

<hr />

<p>원래였다면 SLAM/Navigation은 상당히 중요한 기능이다. 자율 주행에 있어 맵을 따오고,<br />
알고리즘을 계산하여 가장 가까운 방향으로 이동하는 것이 필요하게 된다면 말이다.<br />
그러나, 국방로봇 경진대회에서는 크게 필요가 없어보인다. (각 트랙을 한 번에 완주하는 것이 목표가 아니므로.)</p>

<p>그리하여 알고리즘 및 Turtlebot3 패키지에서 제시된 SLAM/NAVIGATION 코드 내부만 이해하고 진행 과정에 대해서만 이야기 해볼까 한다.<br />
일반적으로, SLAM을 통해 내가 이동하는 모든 경로의 지도를 생성한다. 지도를 만들게 되면, 이 맵 안에서 내 위치를 계속해서 갱신한다.<br />
이후, 내가 이동하고자 하는 위치로의 경로를 계산하고 이동하는 과정을 반복한다.</p>

<p>물론, 이 과정에서 수많은 알고리즘이 존재한다.<br />
이 내용은 겨울방학, 혹은 내가 실제로 국방로봇 때 사용해야 한다면 그 때 다시 소개하겠다.</p>

<p><img src="/posts/mrc004.png" alt="Image" /></p>

<p>간단하게 방 내부 <strong>SLAM</strong>을 통해 맵을 따고, (RVIZ2 활용)</p>

<p><img src="/posts/mrc005.png" alt="Image" /></p>

<p>방 내부 SLAM 과정이고, Rviz2 자체에서 Navigation까지 이어서 진행할 수 있다.</p>

<hr />

<h3 id="중간-점검-및-최종-목표-설정-후-종료">중간 점검 및 최종 목표 설정 후 종료</h3>

<hr />

<p>사실, 이 모든 과정을 학기 중에 진행하는 것만 해도 충분히 어려웠다.<br />
(학점을 4.5를 맞겠다는 목표를 다짐도 했으므로 더욱 그럴 것이다.)</p>

<p><img src="/posts/mrc008.png" alt="Image" /></p>

<p>물론, 팀원 중 한 명이 C.V를 그만두면서 본인이 맡게 되었고, 이 과정에서 모든 과정은 지연됐다.</p>]]></content><author><name></name></author><category term="2024" /><category term="MRC" /><summary type="html"><![CDATA[국방로봇 경진대회 Research Diary #2]]></summary></entry><entry><title type="html">터틀봇을 이용한 Ros2 공부</title><link href="https://hs-p.github.io/posts/turtlebot2/" rel="alternate" type="text/html" title="터틀봇을 이용한 Ros2 공부" /><published>2024-03-24T20:00:00+09:00</published><updated>2024-03-24T20:00:00+09:00</updated><id>https://hs-p.github.io/posts/turtlebot2</id><content type="html" xml:base="https://hs-p.github.io/posts/turtlebot2/"><![CDATA[<h1 id="overview">Overview</h1>

<hr />

<p>Turtlebot3는 K-Community 이후로 잘 다루지 않게 되었고, 반납을 진행하였으나 다시 돌려받게 되었다.<br />
그러나 ‘꼭 이게 필요할까?’ 라는 생각을 했었는데, 자율 주행 코드를 짜야지, 짜야지 하며 생각만 하며 머리를 끙끙 앓다가 눈에 들어온 것이 바로 이 <strong>터틀봇</strong>이었다.</p>

<p>시뮬레이션을 통해서 값들을 많이 조종해보고, Topic, Service, Action을 몸으로 익히는 과정을 거쳤다.<br />
정확히는, <strong>GPU 가속</strong>을 받은 상태로 Simulation을 하면 더욱 효율적이지 않을까? 했지만, 이는 꽤나 큰 무리였던 모양이었다.</p>

<p><strong><em>“왜요?”</em></strong></p>

<ul>
  <li>
    <p><strong>Desktop</strong> - Window (WSL2) Gazeobo Simulation 시 GPU 가속이 할당되지 않는 오류가 발견, 구글링 후 5페이지에 가까운 해결방법들을 전부 적용해 봤지만 해결되지 않았다.</p>
  </li>
  <li>
    <p><strong>Desktop</strong> - Window (Docker) 위와같은 오류 발생, 해결 불가능.</p>
  </li>
  <li>
    <p><strong>Desktop</strong> - Linux (사용 불가) 사용하고 있는 파티션들과 용도 자체가 한정되어 있어 설령 Linux 환경을 조성해서 사용한다고 하더라도, Linux에서 원격을 실행시켜 Laptop - Desktop - ssh가 아니고선 아무런 쓸모가 없어지기에, 때려쳤다.</p>
  </li>
  <li>
    <p><strong>Laptop</strong> - Windows 환경을 사용할 필요 x. 현재는 Ubuntu 22.04, Ubuntu 20.04, Windows로 Triple boot를 적용시켜 사용하고 있다.</p>
  </li>
</ul>

<p>그렇게 Laptop에서 내장그래픽을 사용해 FPS 약 30정도로 준수하게 Simulation들을 해보았고, 여러 예제들을 실행시켜 보았다.</p>

<p><strong><em>뭘 해야 하지?</em></strong></p>

<p>사실, 그냥 뇌정지가 왔다.<br />
Ros도 안다, Ubuntu 환경에서 커맨드를 자유자제로 사용하고, Python Programming을 준수하게 할 수 있는 수준이라고 판단했다.</p>

<p>그러나, 무엇을 어떻게 시작해야 하는가?<br />
사막 한 가운데에 선 느낌이었고, 개발 환경을 조성하고 2주 가량 <strong>Turtlebot</strong>의 오류 해결 및 기본 예제들을 점검해봤다.</p>

<h1 id="trouble-shooting">Trouble-Shooting</h1>

<hr />

<p><strong>배터리 전압 인가 문제</strong><br />
<strong>OPENCR Battery 문제</strong><br />
<strong>Raspberry PI Ram 문제</strong></p>

<p><strong>각각의 문제들에 대해서는 추후에 다루도록 하겠다.</strong></p>

<h1 id="coding">Coding</h1>

<p><a href="https://youtu.be/2dgzPjEkKPw">Simulation</a></p>

<ul>
  <li>Simulation 한 결과물</li>
</ul>

<p><a href="https://youtu.be/Uwg_oB1Wx0c">Basic Drive</a></p>

<ul>
  <li>기초 코딩 결과물</li>
</ul>

<p><a href="https://youtu.be/v9UqywMepPs">Lidar Sensor Drive</a></p>

<ul>
  <li>Topic, Publish, Subscribe를 이용한 기초 Run &amp; Stop Drive</li>
</ul>

<p><a href="https://youtu.be/XHfseQG8Ctg">Lidar Sensor Drive 2</a></p>

<ul>
  <li>Autonomous Drive</li>
</ul>

<h3 id="차후-해야할-일"><strong>차후 해야할 일</strong></h3>

<ul>
  <li><strong>Action Programming</strong></li>
  <li><strong>SLAM &amp; Navigation</strong></li>
</ul>]]></content><author><name></name></author><category term="2024" /><category term="Turtlebot3" /><summary type="html"><![CDATA[Overview]]></summary></entry><entry><title type="html">Team Meating [24.03.09]</title><link href="https://hs-p.github.io/posts/Debate5/" rel="alternate" type="text/html" title="Team Meating [24.03.09]" /><published>2024-03-14T10:00:00+09:00</published><updated>2024-03-14T10:00:00+09:00</updated><id>https://hs-p.github.io/posts/Debate5</id><content type="html" xml:base="https://hs-p.github.io/posts/Debate5/"><![CDATA[<h1 id="2024년도-제-5차-정기-회의-결과-보고서">2024년도 제 5차 정기 회의 결과 보고서</h1>

<h1 id="현황-보고">현황 보고</h1>
<h3 id="20240228에-진행한-회의-내용-포함">2024/02/28에 진행한 회의 내용 포함</h3>

<hr />

<h2 id="1-team-hw">1. Team. H/W</h2>
<hr />

<h3 id="현황-보고-1"><strong>현황 보고</strong></h3>

<p><img src="/posts/debate51.png" alt="Image" /></p>

<ul>
  <li>3D Printer로 출력한 결과물(담헌실학관)이다.</li>
</ul>

<p><img src="/posts/debate52.png" alt="Image" /></p>

<ul>
  <li>
    <p>공차 역시 오차 범위 내에 있어 샤프트 결합 방식이 적합하게 잘 맞아 떨어졌다.</p>
  </li>
  <li>
    <p>경기장 제작은 잠시 연기 (보관할 장소의 문제)</p>
  </li>
  <li>
    <p>서스펜션 설계는 1차적으로 완성(단순 Spring), 추후 보완 및 개발 예정</p>
  </li>
</ul>

<h2 id="2-team-sw">2. Team. S/W</h2>
<hr />

<h3 id="물품-선정-및-seminar-발표-준비"><strong>물품 선정 및 Seminar 발표 준비</strong></h3>

<ul>
  <li>
    <p>발표 자료 참고</p>
  </li>
  <li>
    <p>특별 진행 사항 : Turtlebot 복귀 후 활동 결과 배터리 문제로 확인.</p>
  </li>
  <li>
    <p>외 이상 無</p>
  </li>
</ul>

<p><img src="/assets/img/posts/printing.hwp" alt="File" /></p>]]></content><author><name></name></author><category term="2024" /><category term="Meeting" /><summary type="html"><![CDATA[2024년도 제 5차 정기 회의 결과 보고서]]></summary></entry><entry><title type="html">2/25 Diary</title><link href="https://hs-p.github.io/posts/organization/" rel="alternate" type="text/html" title="2/25 Diary" /><published>2024-02-25T10:00:00+09:00</published><updated>2024-02-25T10:00:00+09:00</updated><id>https://hs-p.github.io/posts/organization</id><content type="html" xml:base="https://hs-p.github.io/posts/organization/"><![CDATA[<h1 id="221">~2/21</h1>
<hr />

<p>이때까지 URDF 공부를 진행했다.<br />
공부를 하다 보니, <strong>Gazebo Simulation</strong> 환경에서 <strong>GPU</strong> 가속을 사용하고 싶었다.<br />
Desktop이 <strong>RTX3080</strong>을 사용하고 있었기에, 내장 그래픽을 사용하는 노트북 보다는 이 편이 나을 것 같았다.</p>

<p>그러나, Docker 환경을 통해 <strong>Windows</strong> 환경에서 Foxy를 통해 Gazebo를 실행한 결과, <strong>아래</strong>와 같은 결과가 나왔다.</p>

<p><img src="/posts/org1.png" alt="Image" /></p>

<p>CPU 사용량이 하나 코어 기준 <strong>94%</strong>, 두개 사용 시 <strong>150%</strong> 이상 사용되며 프레임이 10 이하로 출력되었다.</p>

<p>이 문제는 <strong>Nvidia Driver</strong>, <strong>CUDA</strong> 미설치라는 이야기가 많았다.<br />
그렇기에, CUDA와 Nvidia Driver을 Setup하고, <strong>Nvidia-smi</strong> 명령어를 통해 정상적으로 RTX3080 인식을 시켰다.</p>

<p><img src="/posts/org2.png" alt="Image" /></p>

<p>그러나 <strong>혁조</strong> 쪽에서는 정상적으로 작동되었고, 사용하고 있는 <strong>Process</strong> 내용을 정상적으로 인식하고 있었다.<br />
내 쪽에서는 전혀 되지 않아서, 또 다른 방법을 강구해보고 구글링을 계속해서 해 보았다.</p>

<h1 id="223">~2/23</h1>
<hr />

<p><strong>Jetson Tx2 Setup</strong>을 완료했다.<br />
소요 시간은 약 <strong>3시간 30분</strong> 정도.</p>

<p><strong>Nvidia Docker</strong>에 대해서는 계속해서 공부를 진행했다.</p>

<p>처음으로 시도해본 방식은, <strong>WSL2</strong>를 사용해 직접적으로 설치해서 쓰는 것.<br />
기존에는 <strong>컴퓨터 - WSL2(Ubuntu 20.04) - Nvidia-Docker - Foxy(Ubuntu 20.04) - Gazebo</strong> 였다면,<br />
이번에는 중간에 <strong>Nvidia-Docker</strong>과 <strong>Foxy</strong>를 제거해 보기로 했다. 즉, <strong>WSL2</strong>을 통해 바로 <strong>Gazebo</strong>를 실행시키는 과정으로 변경하겠다는 뜻이다.</p>

<p>그렇게, 내 <strong>Desktop</strong>에 설치를 했고, <strong>Foxy Setup</strong> 과정을 거쳤다.<br />
그 결과 <strong>Gazebo</strong>에서 FPS는 1~2 정도가 출력되었다.<br />
<strong>CUDA, Nvidia Driver</strong>은 정상적으로 설치했고, RTX 3080도 인식을 잘 했으나, 해결되지 않았다.</p>

<p>이 문제를 해결하겠다고 이틀, 삼일 넘게 매달렸으나 수확은 없었다.<br />
이 시기에, 이미 <strong>URDF</strong>는 하드웨어 팀에서 넘어온 상태였다.</p>

<h1 id="225">~2/25</h1>

<p><img src="/posts/org4.png" alt="Image" /><br />
<em>결국 나는 GPU 가속이 되지 않는 오류를 극복하지 못했다.</em></p>

<p>그래서, 다시 내장그래픽인 노트북으로 돌아가기로 했다.<br />
프레임이 적게 나오더라도, <strong>1~2 FPS</strong>보다는 나을 것이기 때문에,<br />
추후에 문제가 발생한다면 다시 돌아오기를 기약했다.</p>

<p>노트북에서 <strong>URDF</strong> 파일을 받고 실행을 했으나, 역시나 문제가 발생했다.<br />
ament_cmake 기반의 C 기반 패키지로 솔리드웍스에서 URDF가 도착하는데, 이는 ROS1 파일 기준이다.<br />
ROS2 기준에서는 <strong>URDF</strong> 작성 방식은 동일하나, <strong>Package.xml</strong>과 <strong>setup.py</strong> 파일을 수정할 필요가 있었다.</p>

<p>파일을 수정하고, 실행한 결과 정상 출력이 되었으나 로봇의 형체가 나타나지 않았다.<br />
<img src="/posts/org6.png" alt="Image" /></p>

<p>로봇의 형체가 나타나지 않고, TF만 나타났다.<br />
<strong>Gazebo에서는 심지어 멈춰버렸다.</strong></p>

<p>아마도 STL을 불러오는 과정에서 내가 <strong>GPU</strong>가 없어서 그런가? 하고 혁조에게 전송했다.<br />
그러나 혁조 역시 아래와 같은 사진이 뜨며 오류가 발생했다.</p>

<p><img src="/posts/org3.png" alt="Image" /></p>

<p>아아악!!!</p>

<p>이 문제를 어떻게 해결해야 할지 계속해서 연구하고 고민해 보겠다.<br />
만약, 정 안된다면 <strong>Launch파일 만들기</strong>를 먼저 진행해야 할지도 모른다는 생각이 들었다.<br />
보드 제어하는 방식에서 분명 배울 것이 있을 것이기 때문이다.</p>]]></content><author><name></name></author><category term="2024" /><category term="ROS" /><summary type="html"><![CDATA[~2/21]]></summary></entry><entry><title type="html">Team Meating [24.02.21]</title><link href="https://hs-p.github.io/posts/Debate4/" rel="alternate" type="text/html" title="Team Meating [24.02.21]" /><published>2024-02-21T10:00:00+09:00</published><updated>2024-02-21T10:00:00+09:00</updated><id>https://hs-p.github.io/posts/Debate4</id><content type="html" xml:base="https://hs-p.github.io/posts/Debate4/"><![CDATA[<h1 id="2024년도-제-4차-정기-회의-결과-보고서">2024년도 제 4차 정기 회의 결과 보고서</h1>

<h1 id="현황-보고">현황 보고</h1>
<h3 id="20240219에-진행한-간이-회의-내용-포함">2024/02/19에 진행한 간이 회의 내용 포함</h3>

<hr />

<h2 id="1-team-hw">1. Team. H/W</h2>
<hr />

<h3 id="국방로봇-feedback"><strong>국방로봇 Feedback</strong></h3>

<ul>
  <li>
    <p>Torque 계산은 동역학적 계산 방식으로 해도 상관 無<br />
Torque 계산에 복합적 요소가 들어가기 위해선 <strong>속도가 빨라야 함.</strong><br />
그러나 우리가 움직이는 속도는 초속 10cm 이내이기 때문에, Dynamic 효과를 추가적으로 계산할 필요는 없음.</p>
  </li>
  <li>
    <p>Motor 선정 역시 <strong>안전율</strong>을 고려해서 계산할 것을 추천.<br />
모터는 비쌀수록 <em>(정확히는 더 높은 토크를 가지고 있을수록)</em> 좋으므로, 자본에 모터를 맞추길 권장하셨음.</p>
  </li>
  <li>
    <p>차체 재료는 알루미늄 6061 계열이어도 충분하다고 판단.</p>
  </li>
  <li>
    <p>Payload 중량을 높일 수 있는 방법에 대해 논의.<br />
일부 논문에서는 적은 중량을 집어올릴 때 <strong>카운터 밸런싱</strong> 설계를 진행하면 역효과가 난다는 이야기가 있었음.<br />
교수님께서는 카운터 밸런싱 설계와 <strong>중력보상 메커니즘</strong> 적용을 추천해 주셨음.</p>
  </li>
  <li>
    <p>바퀴 접지면을 늘리기 위해서 <strong>서스펜션 설계</strong> 추천하셨음.</p>
  </li>
</ul>

<h3 id="추후-분기점-228일까지-완료할-사안"><strong>추후 분기점 2/28일까지 완료할 사안</strong></h3>
<hr />

<p><strong>&lt; 임상수 &gt;</strong></p>

<ol>
  <li>적합한 모터 찾기 <strong>(기어 박스, 기어비 등 모든 요소 고려)</strong></li>
  <li>Manipulator <strong>URDF</strong> 추출 후 전달 <em>(Grip부 제외)</em></li>
  <li>Manipulator <strong>Grip</strong>부 제작</li>
</ol>

<p><strong>&lt; 배성우 &gt;</strong></p>

<ol>
  <li>완성된 몸체 초안 다듬기</li>
  <li>3D Printer로 뽑을 조립 제작 시작 <strong>(Partition 분할)</strong></li>
  <li>4학년 랩장에게 Confirm 받기.</li>
  <li>초안 출력 전까지 완료</li>
</ol>

<h3 id="to-do"><strong>To do</strong></h3>

<ol>
  <li><strong>3D Printing</strong>을 할 장소 <strong>(새롬관, 사설, 교수님 등)</strong></li>
  <li>국방로봇 <strong>주행용 맵</strong> 제작</li>
  <li>Manipulator, Body <strong>제작</strong> 및 <strong>주행 시 오류</strong></li>
  <li>Manipulator <strong>목표 하중</strong> 들기</li>
  <li><strong>궤도</strong> 설계 및 출력</li>
  <li><strong>서스펜션</strong> 설계 및 출력</li>
  <li><strong>알루미늄 6061</strong> 확보 및 설계, 출력</li>
  <li>조립을 위한 Detail 요소 선정 <strong>(나사, 모터, 세부 소재)</strong></li>
</ol>

<h2 id="2-team-sw">2. Team. S/W</h2>
<hr />

<h3 id="국방로봇-개발-현황-보고"><strong>국방로봇 개발 현황 보고</strong></h3>

<p><strong>Ubuntu 22.04 Humble 환경에서 진행하던 현 상황.</strong><br />
<strong>그러나 더 방대한 자료가 있는 Ubuntu 20.04 Foxy 환경에서 진행하기로 결정.</strong></p>

<p><strong>&lt; 이현승 &gt;</strong></p>

<ol>
  <li><strong>Jetson Tx2 Board Setup</strong> 과정에서 어려움 겪는 중</li>
  <li><strong>DeepLearning</strong> 과정 이수</li>
  <li>사진으로 <strong>Object Detection</strong> 완료</li>
</ol>

<p><strong>&lt; 권혁조 &gt;</strong></p>

<ol>
  <li><strong>URDF</strong> 불러오는 과정에서 오류 발생.</li>
  <li>새롭게 환경 재구성 후 재시도, <strong>Manipulator</strong> URDF 불러오기</li>
  <li><strong>Launch</strong> 파일 공부</li>
</ol>

<p><strong>&lt; 박한솔 &gt;</strong></p>

<ol>
  <li><strong>URDF</strong> 불러오는 과정에서 <strong>GPU</strong> 인식 불가 오류 발생.</li>
  <li><strong>WSL2</strong> 재설치, 다시 <strong>URDF Package Setup</strong>하는 과정</li>
  <li><strong>NVIDIA-DOCKER</strong> 환경 구성</li>
</ol>

<h3 id="추후-분기점-228까지-완료할-사안"><strong>추후 분기점 2/28까지 완료할 사안</strong></h3>
<hr />

<p><strong>&lt; 이현승 &gt;</strong></p>

<ol>
  <li><strong>Jetson Tx2 Board Setup</strong></li>
  <li><strong>Ros2 Topic Webcam Publish</strong></li>
</ol>

<p><strong>&lt; 권혁조 &gt;</strong></p>

<ol>
  <li><strong>URDF</strong> 불러오기</li>
  <li><strong>Launch</strong> 파일 제작</li>
</ol>

<p><strong>&lt; 박한솔 &gt;</strong></p>

<ol>
  <li><strong>URDF</strong> 불러오기</li>
  <li><strong>Launch</strong> 파일 제작</li>
  <li><strong>Jetson Tx2 Board Setup</strong> 해주기</li>
</ol>

<h3 id="to-do-1"><strong>To do</strong></h3>

<ol>
  <li><strong>IMU Board</strong> 제어 및 선정</li>
  <li><strong>통신</strong> 구현</li>
  <li><strong>Object Detection</strong> 후 값 가져오기</li>
  <li><strong>자율 주행</strong> 구현</li>
  <li><strong>Ros2 Foxy</strong> 환경에서 <strong>Gazebo Simulation</strong></li>
  <li><strong>Camera, Lidar, Board</strong> 선정 및 구매</li>
  <li><strong>Manipulator Grip</strong> 구현</li>
</ol>]]></content><author><name></name></author><category term="2024" /><category term="Meeting" /><summary type="html"><![CDATA[2024년도 제 4차 정기 회의 결과 보고서]]></summary></entry><entry><title type="html">URDF 공부 정리</title><link href="https://hs-p.github.io/posts/urdf/" rel="alternate" type="text/html" title="URDF 공부 정리" /><published>2024-02-14T20:00:00+09:00</published><updated>2024-02-14T20:00:00+09:00</updated><id>https://hs-p.github.io/posts/urdf</id><content type="html" xml:base="https://hs-p.github.io/posts/urdf/"><![CDATA[<h1 id="urdf-공부-정리">URDF 공부 정리</h1>

<hr />

<p>2월이 지나가기 전, 우리 팀의 목표는 기초를 전부 다지는 것이다.<br />
심화적인 부분을 시작하기 전, <strong>결과물을 도출하기 위한 실력</strong>을 제대로 길러보고자 노력했다.</p>

<p>1월 말부터 2월 중순인 현재, 아래 활동들을 진행했다.</p>

<ul>
  <li>ROS 책 읽기 [1회독]</li>
  <li>2차 회의 : <a href="">주제 / 대회 FIX 및 분석</a></li>
  <li><a href="https://www.youtube.com/playlist?list=PLpkj8RKr48wYB9GgoIZLi-uyL1VNCooMi">CAN통신 기초 개념 이해</a></li>
  <li><a href="https://www.youtube.com/watch?v=K9L9YZhEjC0&amp;t=397s">UDP/TCP 통신 개념 기초 이해</a></li>
  <li><a href="https://www.youtube.com/watch?v=K9L9YZhEjC0&amp;t=397s">Callback 함수 이해</a></li>
</ul>

<p>그리고, 가장 중요한 부분에 대해서 배우기 시작했다.<br />
Simulation을 위해서라면 Simulation을 위한 Manipulator, Robot 본체 등이 필요하다.<br />
이 때문에 우리는 <strong>URDF</strong>를 공부를 해야 하는 것이다.</p>

<p><em>URDF(Unified Robot Description Format)는 실제 물리적인 로봇이 아닌 가상환경에서 로봇의 규격을 정의할 수 있는 규칙이라 할 수 있습니다. URDF는 XML 형식으로 구성되며 ROS 및 Gazebo와 연동하여 가상환경에서 다양한 동작을 실험할 수 있습니다.</em> <a href="https://with-rl.tistory.com/entry/URDF%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-%EB%A1%9C%EB%B4%87-%EB%A7%8C%EB%93%A4%EA%B8%B0-1">출처 : Tistory</a></p>

<p>로봇을 간단하게 <strong>제작</strong>하고, 내가 원하는 방식으로 <strong>움직</strong>일 수 있으며, <strong>Gazebo</strong>와 연동해 물리학적 실험 역시 가능한 최고의 기술이다!<br />
그 중에서도 역시, <strong>간단하게 제작</strong>이라는 부분이 가장 큰 요소이지 않을까 싶다.</p>

<hr />

<h2 id="urdf-basic">URDF Basic</h2>
<p>처음으로는 URDF에 대한 내용 이해, <strong>Gazebo</strong>와 <strong>Rviz</strong> 각각에 대해 자세히 이야기 해주시는 Youtuber를 찾아갔다.<br />
<a href="https://www.youtube.com/@ArticulatedRobotics">Articulated Robotics</a>라는 분이 상당히 잘 설명해 주시는데, 나는 이 강의가 진짜 너무 <strong>효율적</strong>이었다고 본다.<br />
<em>(물론, 영어를 잘 못해 여러번 들었다.)</em></p>

<p>이 분의 강의는 짧은건 7분, 긴건 27분 정도로 잘 형성되어 있는데, 이 강의만 사실 전부 이해를 해도 <strong>URDF</strong>에 대한 이해가 어느 정도 된다고 본다.<br />
이 후속에 대한 내용은 이 <strong>Articulated Robotics</strong>에 대해서 이해를 하고 넘어가는 것이 가장 효율적일 것이라 본다. Ros 기초에 대해서도 다뤄주니 말이다.</p>

<p><img src="/posts/urdf2.png" alt="Image" />
(URDF에 대한 이해를 위해 RQT_Graph를 통해 Robot_state_publish Check)</p>

<hr />

<h2 id="urdf-design">URDF Design</h2>
<p><a href="https://chickencat-jjanga.tistory.com/39">URDF 기초 설계</a> 라는 게시글을 참고하면 Design에 도움이 된다.<br />
본 필자는 처음으로 이 글을 보며 이해를 시작했고, 도움이 어느 정도 됐다.<br />
사실, 실제로 해 보기 전까지 이런 내용들은 이론적 내용에 불과해 실제로 해보는 것이 중요하다는 생각이 들었다.</p>

<p><img src="/posts/urdf1.png" alt="Image" />
(Manipulator를 위한 축 Joint 설계 및 Test in Rviz)</p>

<hr />

<h2 id="urdf-make-simulation">URDF Make, Simulation</h2>

<p><a href="https://with-rl.tistory.com/entry/URDF%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-%EB%A1%9C%EB%B4%87-%EB%A7%8C%EB%93%A4%EA%B8%B0-1">URDF 완벽 정복</a>이라는 게시글을 참고했다. 처음부터 끝까지 전부 따라갔으며, Unity 부분부터는 다시 시작하는 느낌이라 제외했다.</p>

<p>그러나, 이걸 바탕으로 Simulation Tool에 대한 이해도, <strong>Gazebo와 Rviz Setup, Package.xml, URDF, Launch file, Executable 등 전부 이해를 완료했다.</strong></p>

<p>너무나도 감사하고, 한 줄기 빛과 같은 한글 강의였다.</p>

<p>2월 15일부터는 Manipulator URDF를 가져와 Gazebo와 Rviz Simulation을 위한 Launch File 프로그래밍을 시작할 것 같다.</p>

<p>시작은 <strong>단순 주행</strong>이다.
마지막으로 이번 URDF 공부를 하며 찍었던 사진들에 대해 올려두겠다.</p>

<p><img src="/posts/urdf3.png" alt="Image" /></p>

<p>시작으로는 자동차를 설계해 움직여 보는 걸 확인했다.<br />
Rviz에서만 움직여 이상적 상황에 움직임을 유도하는데, <strong>Collision(충돌)</strong> 을 켜 두었어도 충돌이 크게 없었기에, 의미가 없었다.</p>

<p><img src="/posts/urdf4.png" alt="Image" /></p>

<p>Lidar 센서를 부착하고, Gazebo에서 Simulation을 시작했다.<br />
Lidar에서 뿌리는 선의 개수를 <strong>4개에서 360개</strong>로 증가시켰고, Corn을 바닥에 설치해 장애물을 확인하고, Rviz에서도 <strong>Use_sim_time</strong>을 <strong>true</strong>로 변경, <strong>Simulation을 동기화</strong> 해 확인해 보았다.</p>

<p><img src="/posts/urdf5.png" alt="Image" /></p>

<p>마지막으로, <strong>DepthCamera</strong>와 <strong>Lidar</strong>을 전부 작동시키고 동작하는 장면이다.<br />
처음과 거의 유사하지만, 왼쪽의 Terminal에서 <strong>결과값을 출력</strong>하고 있는 걸 확인할 수 있다.</p>]]></content><author><name></name></author><category term="2024" /><category term="ROS" /><summary type="html"><![CDATA[URDF 공부 정리]]></summary></entry><entry><title type="html">Team Meating [24.02.13]</title><link href="https://hs-p.github.io/posts/Debate3/" rel="alternate" type="text/html" title="Team Meating [24.02.13]" /><published>2024-02-13T10:00:00+09:00</published><updated>2024-02-13T10:00:00+09:00</updated><id>https://hs-p.github.io/posts/Debate3</id><content type="html" xml:base="https://hs-p.github.io/posts/Debate3/"><![CDATA[<h1 id="2024년도-제-3차-정기-회의-결과-보고서">2024년도 제 3차 정기 회의 결과 보고서</h1>

<h1 id="현황-보고">현황 보고</h1>

<hr />
<h2 id="1-team-hw">1. Team. H/W</h2>

<h3 id="ppt-제작-85">PPT 제작 85%</h3>

<ul>
  <li>천병식 교수님께 <strong>Confirm</strong> 받을 자료</li>
  <li><strong>Payload</strong> 계산 필요</li>
  <li><strong>기어비</strong> 계산, <strong>RPM</strong> 계산 후 <strong>Motor</strong> 선정.</li>
</ul>

<p><strong>&lt; 배성우 &gt;</strong></p>
<ol>
  <li><strong>국방 로봇</strong> 본체 초안 / 바퀴 제작 완료.</li>
</ol>

<p><img src="/posts/debate32.png" alt="Image" /> (바퀴 초안)
<img src="/posts/debate31.png" alt="Image" /> (몸체 초안)</p>

<p>바퀴에는 <strong>24V</strong> 인가를 요청함. <strong>추가 배터리</strong>를 사용할 것 같음.</p>

<p><strong>&lt; 임상수 &gt;</strong></p>
<ol>
  <li>Manipulator 초안 제작 완료</li>
</ol>

<p><img src="/posts/debate33.png" alt="Image" /> (Manipulator 초안)</p>

<p><strong>500g</strong>을 들 수 있어야 하기에, 최소 <strong>750g</strong> 이상의 Payload를 요구함.<br />
___</p>

<h2 id="2-team-sw">2. Team. S/W</h2>

<p>소프트웨어는 모두 <a href="https://product.kyobobook.co.kr/detail/S000001891112">Ros2 책</a>을 참고해서 공부를 진행했다.</p>

<h4 id="공부-진행-분야">공부 진행 분야</h4>
<ul>
  <li>권혁조 : <strong>Manipulator</strong>, 역기구학, <strong>Ros</strong></li>
  <li>박한솔 : <strong>Socket-CAN, Ros Gazebo Simulation, URDF</strong></li>
  <li>이현승 : <strong>OpenCV Deep Learning 교육 이수중</strong>, <strong>Jetson Tx2</strong> 보드 공부</li>
</ul>

<p>본 필자가 공부를 완료한 부분은 <a href="https://hs-p.github.io/posts/urdf/">URDF</a>에서 자세히 다루겠다.</p>

<p>다음 분기점은 <strong>2월 16일</strong>로 선정, 각자의 과업을 선정 완료하였음.</p>

<hr />

<h2 id="3-물자-현황">3. 물자 현황</h2>

<ul>
  <li><strong>Jetson Tx2 Board(+)</strong>
<em>(사비로 구매)</em><br />
___</li>
</ul>

<h1 id="portfolio">Portfolio</h1>

<h3 id="team-hw">Team H/W</h3>

<p><strong>PPT</strong>를 이용하거나, <strong>네이버 블로그</strong> 등을 통해 제작할 예정.<br />
<strong>메타로봇 연구회</strong> 지원 시, 다섯 명 전부 붙어 연구회의 지원 하 출전할 예정.</p>

<h3 id="team-sw">Team S/W</h3>

<p><strong>Github</strong> Upload를 진행할 예정.<br />
Project형도 가능, Github.io 블로그 운영 예정. <em>(필자와 유사)</em><br />
<strong>2/18 (일) 20시</strong> 교육 예정.
___</p>

<h2 id="216">~2/16</h2>

<p><strong>OpenCV 기초 완료 (카메라 Object Detection)</strong><br />
<strong>URDF Testing 완료, Launch File 구성 이해</strong><br />
<strong>Portfolio Setup (2/18)</strong></p>

<p><strong>Manipulator 역기구학 기초적 행렬 이해</strong><br />
<strong>국방로봇 초안 완성, PPT를 통한 발표</strong></p>

<hr />

<h1 id="돈">돈</h1>

<p>제일 문제에 봉착했고, <strong>LINC사업단, 동아리, 연구회, 랩실 등</strong> 여러 군데 요청을 진행했다.</p>

<p><strong>연구회</strong>에서는 자본적인 지원에 대한 이야기를 들었기에, 전원 연구회 지원 예정. (Portfolio 준비가 급해진 이유도 이 때문.)<br />
<strong>랩실</strong>에서도 공학설계를 위한 지원을 담당 교수님께서 해주실 것으로 보임.</p>

<p><strong>동아리</strong>는 배제.<br />
<strong>LINC사업단</strong>에서는 이동 금액 지원, 식비 정도 지원해주므로 반드시 지원 신청을 한 달 전에는 해 두기.</p>]]></content><author><name></name></author><category term="2024" /><category term="Meeting" /><summary type="html"><![CDATA[2024년도 제 3차 정기 회의 결과 보고서]]></summary></entry></feed>