<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Agoge AI</title>
    <link>https://agoge-ai.tistory.com/</link>
    <description>AI를 활용한 시스템 설계, 프로그래밍을 주제로 한다.
로봇 및 드론 관련, RUST 프로그래밍을 다룬다.</description>
    <language>ko</language>
    <pubDate>Mon, 29 Jun 2026 03:36:21 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>AI를 활용한 지식 정보화</managingEditor>
    <image>
      <title>Agoge AI</title>
      <url>https://tistory1.daumcdn.net/tistory/8266925/attach/42deff18642242b0901c4754d437b35a</url>
      <link>https://agoge-ai.tistory.com</link>
    </image>
    <item>
      <title>  Isaac Sim 5.1.0 &amp;amp; ROS 2 Jazzy AMR 프로젝트 가이드</title>
      <link>https://agoge-ai.tistory.com/8</link>
      <description>&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt;1. ROS 2 워크스페이스 및 패키지 생성&lt;/h2&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;가장 먼저 터미널에서 프로젝트 구조를 만듭니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjty9n7oLSSAxUAAAAAHQAAAAAQ5Qc&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;# 1. 워크스페이스 생성
mkdir -p ~/isaac_jazzy_amr_ws/src
cd ~/isaac_jazzy_amr_ws/src

# 2. 패키지 생성 (의존성 포함)
ros2 pkg create --build-type ament_python amr_controller --dependencies rclpy geometry_msgs sensor_msgs

# 3. 소스 폴더로 이동
cd amr_controller/amr_controller
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;6&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size26&quot;&gt;2. 패키지 파일 구성 (File Structure)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;패키지의 핵심 파일 설정 내용입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;① package.xml&lt;/h3&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;의존성 라이브러리가 명시되어야 합니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjty9n7oLSSAxUAAAAAHQAAAAAQ5gc&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
http://download.ros.org/schema/package_format3.xsd&quot; schematypens=&quot;http://www.w3.org/2001/XMLSchema&quot;?&amp;gt;
&amp;lt;package format3&amp;gt;
  &amp;lt;name&amp;gt;amr_controller&amp;lt;/name&amp;gt;
  &amp;lt;version&amp;gt;0.0.0&amp;lt;/version&amp;gt;
  &amp;lt;description&amp;gt;Isaac Sim 5.1.0 AMR Teleop with Pro-Con&amp;lt;/description&amp;gt;
  &amp;lt;maintainer email=&quot;user@todo.todo&quot;&amp;gt;user&amp;lt;/maintainer&amp;gt;
  &amp;lt;license&amp;gt;Apache License 2.0&amp;lt;/license&amp;gt;

  &amp;lt;depend&amp;gt;rclpy&amp;lt;/depend&amp;gt;
  &amp;lt;depend&amp;gt;geometry_msgs&amp;lt;/depend&amp;gt;
  &amp;lt;depend&amp;gt;sensor_msgs&amp;lt;/depend&amp;gt;

  &amp;lt;test_depend&amp;gt;ament_copyright&amp;lt;/test_depend&amp;gt;
  &amp;lt;test_depend&amp;gt;ament_flake8&amp;lt;/test_depend&amp;gt;
  &amp;lt;test_depend&amp;gt;ament_pep257&amp;lt;/test_depend&amp;gt;
  &amp;lt;test_depend&amp;gt;python3-pytest&amp;lt;/test_depend&amp;gt;

  &amp;lt;export&amp;gt;
    &amp;lt;build_type&amp;gt;ament_python&amp;lt;/build_type&amp;gt;
  &amp;lt;/export&amp;gt;
&amp;lt;/package&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size23&quot;&gt;② setup.py&lt;/h3&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;노드를 실행할 수 있도록 진입점(entry_point)을 설정합니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjty9n7oLSSAxUAAAAAHQAAAAAQ5wc&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;from setuptools import find_packages, setup

package_name = 'amr_controller'

setup(
    name=package_name,
    version='0.0.0',
    packages=find_packages(exclude=['test']),
    data_files=[
        ('share/ament_index/resource_index/packages',
            ['resource/' + package_name]),
        ('share/' + package_name, ['package.xml']),
    ],
    install_requires=['setuptools'],
    zip_safe=True,
    maintainer='user',
    maintainer_email='user@todo.todo',
    description='Isaac Sim 5.1.0 AMR Teleop',
    license='Apache License 2.0',
    tests_require=['pytest'],
    entry_points={
        'console_scripts': [
            'amr_control_510 = amr_controller.amr_control_510:main'
        ],
    },
)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size23&quot;&gt;③ amr_control_510.py (핵심 로직)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;~/isaac_jazzy_amr_ws/src/amr_controller/amr_controller/amr_control_510.py 경로에 생성합니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjty9n7oLSSAxUAAAAAHQAAAAAQ6Ac&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import Joy
from geometry_msgs.msg import Twist

class IsaacAMRTeleop(Node):
    def __init__(self):
        super().__init__('isaac_amr_teleop')
        self.joy_sub = self.create_subscription(Joy, 'joy', self.joy_callback, 10)
        self.cmd_pub = self.create_publisher(Twist, '/cmd_vel', 10)
        self.get_logger().info(&quot;AMR 제어 노드 가동: L-Stick(전후), R-Stick(좌우)&quot;)

    def joy_callback(self, joy_msg):
        twist = Twist()
        # 프로콘 매핑: L-스틱 상하(axes[1]), R-스틱 좌우(axes[3])
        twist.linear.x = joy_msg.axes[1] * 1.0  # 선속도
        twist.angular.z = joy_msg.axes[3] * 1.5 # 각속도
        self.cmd_pub.publish(twist)

def main(args=None):
    rclpy.init(args=args)
    node = IsaacAMRTeleop()
    try:
        rclpy.spin(node)
    except KeyboardInterrupt:
        pass
    finally:
        node.destroy_node()
        rclpy.shutdown()
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;18&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size26&quot;&gt;3. Isaac Sim 5.1.0 액션 그래프 설정 (Action Graph)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;이 단계는 Isaac Sim GUI 내에서 수행합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;** 첨부파일은 Isaac sim 실행 후 Open하여 바로 실행하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/pMoMH/dJMcagj21ua/TfsETTSGajp1yQQWSVBgDk/amr_test.usd?attach=1&amp;amp;knm=tfile.usd&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;amr_test.usd&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0&quot;&gt;로봇 추가:&lt;/b&gt; Content Browser -&amp;gt; Isaac/Robots/Carter/nova_carter.usd 배치.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0&quot;&gt;그래프 생성:&lt;/b&gt; Window &amp;gt; Graph Editors &amp;gt; Action Graph 클릭 후 New Action Graph.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,0&quot;&gt;노드 연결:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,1,0,0&quot;&gt;On Playback Tick&lt;/b&gt;: 실행 시작점.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,1,1,0&quot;&gt;ROS2 Subscribe Twist&lt;/b&gt;: /cmd_vel 구독.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,1,2,0&quot;&gt;Break 3-Vector (2개)&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21,2,1,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Linear Velocity &amp;rarr; X 값 추출 (Double 타입으로 변환).&lt;/li&gt;
&lt;li&gt;Angular Velocity &amp;rarr; Z 값 추출 (Double 타입으로 변환).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,1,3,0&quot;&gt;Differential Controller&lt;/b&gt;: Desired Linear Velocity(X), Desired Angular Velocity(Z) 연결.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,1,4,0&quot;&gt;Articulation Controller&lt;/b&gt;: robotPath를 /World/Carter로 지정.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot from 2026-01-31 13-09-17.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mYi2S/dJMb99ZyNIa/DfV2Dwvi9hliP6pTy0BzV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mYi2S/dJMb99ZyNIa/DfV2Dwvi9hliP6pTy0BzV1/img.png&quot; data-alt=&quot;Action Graph 구성 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mYi2S/dJMb99ZyNIa/DfV2Dwvi9hliP6pTy0BzV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmYi2S%2FdJMb99ZyNIa%2FDfV2Dwvi9hliP6pTy0BzV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;506&quot; height=&quot;285&quot; data-filename=&quot;Screenshot from 2026-01-31 13-09-17.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Action Graph 구성 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-path-to-node=&quot;22&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;23&quot; data-ke-size=&quot;size26&quot;&gt;4. 빌드 및 실행 절차&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size23&quot;&gt;단계 1: ROS 2 워크스페이스 빌드&lt;/h3&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjty9n7oLSSAxUAAAAAHQAAAAAQ6Qc&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;cd ~/isaac_jazzy_amr_ws
colcon build --symlink-install
source install/setup.bash
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;26&quot; data-ke-size=&quot;size23&quot;&gt;단계 2: 시스템 구동 (3개 터미널)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;27&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,0,0&quot;&gt;터미널 1 (Joy Driver):&lt;/b&gt; ros2 run joy joy_node&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,1,0&quot;&gt;터미널 2 (Controller):&lt;/b&gt; ros2 run amr_controller amr_control_510&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,2,0&quot;&gt;Isaac Sim 실행 후:&lt;/b&gt; &lt;b data-index-in-node=&quot;7&quot; data-path-to-node=&quot;27,2,0&quot;&gt;Play&lt;/b&gt; 버튼 클릭.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size26&quot;&gt;참고. Isaac sim 실행 및 ROS2 Jazzy 실행 환경 변수 설정 (.bashrc)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;Isaac sim의 내부 Python 라이브러리와 ROS 2 Jazzy가 충돌하지 않도록 경로를 지정해야 합니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjty9n7oLSSAxUAAAAAHQAAAAAQqQU&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;nano ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;파일 끝에 아래 내용을 추가하세요:&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjty9n7oLSSAxUAAAAAHQAAAAAQqgU&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# ROS 2 Jazzy 환경 로드
source /opt/ros/jazzy/setup.bash

# 아이작 심 경로 설정
export ISAAC_SIM_PATH=$HOME/.local/share/ov/pkg/isaac-sim-5.1.0  # Isaacsim 설치 경로
alias isaac_sim='$ISAAC_SIM_PATH/isaac-sim.sh'

# 아이작 심 내부 파이썬 사용을 위한 별칭 (선택 사항)
alias isaac_python='$ISAAC_SIM_PATH/python.sh'&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;저장 후 적용:&lt;/p&gt;
&lt;pre id=&quot;code_1769833497039&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;source ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-path-to-node=&quot;28&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;29&quot; data-ke-size=&quot;size26&quot;&gt;5. 핵심 주의사항 (최종 체크리스트)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;30&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,0,0&quot;&gt;타입 불일치:&lt;/b&gt; Twist 메시지의 Vector3를 Double로 변환하지 않으면 5.1.0에서는 선이 연결되지 않습니다. &lt;br /&gt;반드시 &lt;b data-index-in-node=&quot;72&quot; data-path-to-node=&quot;30,0,0&quot;&gt;Break 3-Vector&lt;/b&gt; 노드를 사용하세요.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,1,0&quot;&gt;물리 활성화:&lt;/b&gt; 로봇(/World/Carter)의 Articulation Root 속성이 켜져 있어야 물리 명령을 듣습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,2,0&quot;&gt;바퀴 파라미터:&lt;/b&gt; Differential Controller 노드에서 Wheel Radius와 Wheel Distance가 실제 로봇 크기(예: 0.1, 0.5)로 설정되어야 합니다. 0이면 움직이지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;32&quot; data-ke-size=&quot;size16&quot;&gt;GITHUB : &lt;a href=&quot;https://github.com/goooodday/isaac_jazzy_amr_ws.git&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/goooodday/isaac_jazzy_amr_ws.git&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IsaacSim #AMRsim</category>
      <author>AI를 활용한 지식 정보화</author>
      <guid isPermaLink="true">https://agoge-ai.tistory.com/8</guid>
      <comments>https://agoge-ai.tistory.com/8#entry8comment</comments>
      <pubDate>Sat, 31 Jan 2026 13:15:35 +0900</pubDate>
    </item>
    <item>
      <title>  Isaac Sim 로봇 픽앤플레이스 입문 가이드 (ver 5.1.0)</title>
      <link>https://agoge-ai.tistory.com/7</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 가이드는 Isaac Sim 환경에서 &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;3&quot;&gt;Franka 로봇&lt;/b&gt;이 물체를 인식하고 옮기는 전체 과정을 단계별로 설명합니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size26&quot;&gt;  1. 프로젝트 폴더 구성&lt;/h2&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;가장 먼저 프로젝트 파일을 관리할 폴더를 터미널에서 생성합니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwiioO7frLOSAxUAAAAAHQAAAAAQxAE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 워크스페이스 폴더 생성
mkdir -p ~/isaac_ws
cd ~/isaac_ws

# 실행 스크립트 파일 생성
touch pick_and_place.py&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;8&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size26&quot;&gt;  2. 소스 코드 작성&lt;/h2&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;pick_and_place.py 파일을 열고 아래 코드를 복사하여 붙여넣으세요.&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;Isaac Sim 5.1.0의 최신 API 규격을 완벽히 반영한 코드입니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwiioO7frLOSAxUAAAAAHQAAAAAQxQE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;from isaacsim import SimulationApp

# [STEP 1] 시뮬레이션 앱 초기화 (반드시 모든 임포트보다 위에 위치)
simulation_app = SimulationApp({&quot;headless&quot;: False})

from omni.isaac.core import World
from omni.isaac.franka import Franka
from omni.isaac.core.objects import DynamicCuboid, VisualCuboid
from omni.isaac.sensor import Camera
from omni.isaac.franka.controllers import PickPlaceController
import numpy as np
import cv2

def main():
    # [STEP 2] 월드 구성: 물리 엔진과 지면 설정
    world = World(stage_units_in_meters=1.0)
    world.scene.add_default_ground_plane()

    # [STEP 3] 로봇 및 객체 배치
    # Franka 로봇 추가
    franka = world.scene.add(Franka(prim_path=&quot;/World/Franka&quot;, name=&quot;my_franka&quot;))
    
    # 잡을 대상 (빨간 큐브)
    cube = world.scene.add(DynamicCuboid(
        prim_path=&quot;/World/Cube&quot;, name=&quot;target_cube&quot;, 
        position=np.array([0.4, 0.4, 0.05]), size=0.05, color=np.array([1, 0, 0])
    ))
    
    # 놓을 목표 지점 (파란색 영역)
    goal_position = np.array([0.4, -0.4, 0.05])
    world.scene.add(VisualCuboid(
        prim_path=&quot;/World/Goal&quot;, name=&quot;goal_zone&quot;, 
        position=goal_position, size=0.05, color=np.array([0, 0, 1])
    ))

    # [STEP 4] 카메라 설정 (비전 모니터링)
    camera = Camera(prim_path=&quot;/World/MyCamera&quot;, 
                    position=np.array([1.2, 0.0, 1.0]), 
                    resolution=(640, 480))
    camera.initialize()
    camera.set_focal_length(1.8)

    # [STEP 5] 픽앤플레이스 컨트롤러 초기화 (5.1.0 버전 API)
    # 로봇 객체(franka)와 그리퍼 객체(franka.gripper)를 직접 전달합니다.
    pp_controller = PickPlaceController(
        name=&quot;pick_place_controller&quot;,
        robot_articulation=franka,
        gripper=franka.gripper
    )

    world.reset()
    print(&quot;&amp;gt;&amp;gt;&amp;gt; 시뮬레이션 준비 완료!&quot;)

    # [STEP 6] 메인 루프 실행
    while simulation_app.is_running():
        # 물리 엔진 계산 및 렌더링
        world.step(render=True)
        
        if world.is_playing():
            # (A) 비전 데이터 획득: 카메라 프레임을 OpenCV로 시각화
            images = camera.get_current_frame()
            if &quot;rgba&quot; in images:
                cv_frame = cv2.cvtColor(images[&quot;rgba&quot;], cv2.COLOR_RGBA2BGR)
                cv2.imshow(&quot;Robot Monitor&quot;, cv_frame)
                if cv2.waitKey(1) &amp;amp; 0xFF == ord('q'): break

            # (B) 동작 제어: 물체 위치 파악 및 명령 생성
            cube_pos, _ = cube.get_world_pose()
            actions = pp_controller.forward(
                picking_position=cube_pos,
                placing_position=goal_position,
                current_joint_positions=franka.get_joint_positions()
            )
            
            # (C) 명령 실행
            franka.apply_action(actions)

            # 작업 완료 체크
            if pp_controller.is_done():
                print(&quot;&amp;gt;&amp;gt;&amp;gt; 작업을 성공적으로 마쳤습니다!&quot;)
                world.pause()

    cv2.destroyAllWindows()
    simulation_app.close()

if __name__ == &quot;__main__&quot;:
    main()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;12&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size26&quot;&gt;  3. 실행 방법&lt;/h2&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;Isaac Sim은 시스템의 기본 파이썬이 아닌, 자체 내장 파이썬 환경(python.sh)에서 실행해야 합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;터미널을 열고 Isaac Sim 설치 폴더로 이동합니다.&lt;/b&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;cd ~/isaacsim510     // isaac sim 설치 폴더로 이동&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0&quot;&gt;작성한 스크립트를 실행합니다.&lt;/b&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;./python.sh ~/isaac_ws/pick_and_place.py&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-path-to-node=&quot;16&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size26&quot;&gt;  4. 초보자를 위한 주요 개념 설명&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;1) 왜 SimulationApp이 맨 위에 있나요?&lt;/h3&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;Isaac Sim은 GPU 메모리를 미리 선점하고 엔진을 로드해야 합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;이 작업이 끝나기 전에 다른 모듈(World, Franka 등)을 불러오면 &quot;Module Not Found&quot; 에러가 발생합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;2) PickPlaceController의 역할&lt;/h3&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;이 컨트롤러는 **상태 머신(State Machine)**입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;&quot;물체 위로 이동 &amp;rarr; 내려가기 &amp;rarr; 집기 &amp;rarr; 올리기 &amp;rarr; 목표지로 이동 &amp;rarr; 놓기&quot;의 복잡한 과정을&lt;/p&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;forward() 함수 하나로 자동 관리해 줍니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size23&quot;&gt;3) render=True의 의미&lt;/h3&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 물리 계산만 할 때는 False로 두면 성능이 빨라지지만, &lt;b data-index-in-node=&quot;38&quot; data-path-to-node=&quot;23&quot;&gt;카메라 영상&lt;/b&gt;을 받아오려면&lt;/p&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;실제로 화면을 그려야(Rendering) 하므로 반드시 True로 설정해야 합니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;24&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size26&quot;&gt;  5. 자주 발생하는 문제 해결 (FAQ)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;로봇이 물체를 놓쳐요:&lt;/b&gt; 큐브가 너무 작거나 가벼울 수 있습니다. size를 0.05 정도로 설정했는지 확인하세요.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;OpenCV 창이 안 떠요:&lt;/b&gt; cv2.waitKey(1) 코드가 루프 안에 있는지 확인하세요.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,2,0&quot;&gt;API 에러가 나요:&lt;/b&gt; Isaac Sim은 버전별로 인자 이름이 다릅니다. 이 코드는 &lt;b data-index-in-node=&quot;47&quot; data-path-to-node=&quot;26,2,0&quot;&gt;5.1.0 버전&lt;/b&gt; 전용입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;27&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Inovation Lab</category>
      <category>isaacsim #pickplace</category>
      <author>AI를 활용한 지식 정보화</author>
      <guid isPermaLink="true">https://agoge-ai.tistory.com/7</guid>
      <comments>https://agoge-ai.tistory.com/7#entry7comment</comments>
      <pubDate>Fri, 30 Jan 2026 22:40:37 +0900</pubDate>
    </item>
    <item>
      <title>WezTerm 사용을 위한 기본 셋팅 참조</title>
      <link>https://agoge-ai.tistory.com/6</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;맥북(macOS)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;환경에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;WezTerm&lt;/b&gt;을 최적으로 세팅하는 방법을 단계별로 정리하였다.&lt;br /&gt;이 구성은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;iTerm2 &amp;rarr; WezTerm으로 전환&lt;/b&gt;하려는 개발자**(특히 Rust, Neovim, Git, Tmux 사용자)** 기준으로 하였다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 style=&quot;color: #000000; text-align: start;&quot;&gt;  WezTerm 맥북 최적 세팅 가이드&lt;/h1&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;1️⃣ 설치&lt;/h2&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;방법 1: Homebrew (추천)&lt;/h3&gt;
&lt;pre class=&quot;mipsasm&quot; style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;code&gt;brew install wezterm
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;방법 2: 공식 dmg&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://wezfurlong.org/wezterm/&quot;&gt;https://wezfurlong.org/wezterm/&lt;/a&gt;&lt;br /&gt;&amp;rarr; 최신 macOS 빌드 다운로드 후&lt;span&gt;&amp;nbsp;&lt;/span&gt;/Applications에 넣기.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;2️⃣ 기본 설정 파일 생성&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;WezTerm은 설정을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Lua&lt;/b&gt;로 작성합니다.&lt;br /&gt;위치는 다음 경로:&lt;/p&gt;
&lt;pre class=&quot;arduino&quot; style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;code&gt;mkdir -p ~/.config/wezterm
touch ~/.config/wezterm/wezterm.lua
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;3️⃣ 추천 폰트 설정&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;WezTerm은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Nerd Font&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;기반 폰트 사용을 강력히 권장합니다.&lt;br /&gt;다음 명령으로 JetBrainsMono Nerd Font 설치:&lt;/p&gt;
&lt;pre class=&quot;maxima&quot; style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;code&gt;brew tap homebrew/cask-fonts
brew install --cask font-jetbrains-mono-nerd-font
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;4️⃣ 추천 기본 설정 (wezterm.lua)&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아래 코드는 &amp;ldquo;성능 + 미려함 + Neovim 호환성&amp;rdquo;에 최적화된 세팅입니다.&lt;/p&gt;
&lt;pre class=&quot;nix&quot; style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;code&gt;local wezterm = require(&quot;wezterm&quot;)
local act = wezterm.action

return {
  --   테마
  color_scheme = &quot;Gruvbox Dark&quot;,
  font = wezterm.font_with_fallback({
    &quot;JetBrainsMono Nerd Font&quot;,
    &quot;Apple Color Emoji&quot;,
  }),
  font_size = 13.0,

  --   성능 및 렌더링
  freetype_load_target = &quot;Light&quot;,
  freetype_render_target = &quot;HorizontalLcd&quot;,
  front_end = &quot;WebGpu&quot;, -- WebGPU 렌더링 (빠름)

  --   UI 관련
  enable_tab_bar = true,
  hide_tab_bar_if_only_one_tab = true,
  use_fancy_tab_bar = true,
  tab_bar_at_bottom = false,
  window_decorations = &quot;RESIZE&quot;,
  window_background_opacity = 0.93,
  macos_window_background_blur = 20,

  --   단축키 (iTerm2 스타일 비슷하게)
  keys = {
    { key = &quot;t&quot;, mods = &quot;CMD&quot;, action = act.SpawnTab(&quot;CurrentPaneDomain&quot;) },
    { key = &quot;w&quot;, mods = &quot;CMD&quot;, action = act.CloseCurrentTab({ confirm = true }) },
    { key = &quot;Enter&quot;, mods = &quot;CMD&quot;, action = act.ToggleFullScreen },
    { key = &quot;LeftArrow&quot;, mods = &quot;CMD|ALT&quot;, action = act.ActivateTabRelative(-1) },
    { key = &quot;RightArrow&quot;, mods = &quot;CMD|ALT&quot;, action = act.ActivateTabRelative(1) },
    { key = &quot;d&quot;, mods = &quot;CMD&quot;, action = act.SplitHorizontal({ domain = &quot;CurrentPaneDomain&quot; }) },
    { key = &quot;d&quot;, mods = &quot;CMD|SHIFT&quot;, action = act.SplitVertical({ domain = &quot;CurrentPaneDomain&quot; }) },
  },

  --   탭, 분할창 제목 포맷
  tab_max_width = 25,
  tab_and_split_indices_are_zero_based = true,

  --   shell 설정 (기본 zsh / fish / bash)
  default_prog = { &quot;/bin/zsh&quot;, &quot;-l&quot; },

  --   창 크기 / 기본값
  initial_rows = 40,
  initial_cols = 120,
}
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote style=&quot;color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  참고:&lt;span&gt;&amp;nbsp;&lt;/span&gt;color_scheme은&lt;span&gt;&amp;nbsp;&lt;/span&gt;wezterm show-colors로 미리보기가 가능.&lt;br /&gt;인기 테마:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;Gruvbox Dark&quot;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;Tokyo Night&quot;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;OneHalfDark&quot;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;Catppuccin Mocha&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;5️⃣ Neovim / 개발 환경 연동 팁&lt;/h2&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;✅ Neovim 글꼴과 색상 맞추기&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;init.lua&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;init.vim&lt;span&gt;&amp;nbsp;&lt;/span&gt;내에 다음 추가:&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;code&gt;vim.o.termguicolors = true
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;WezTerm은&lt;span&gt;&amp;nbsp;&lt;/span&gt;true color를 완벽히 지원하므로 색 표현이 정확해집니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;✅ Tmux 대체&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;WezTerm 자체가 탭과 분할 지원하므로&lt;br /&gt;tmux를 완전히 대체 가능:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;⌘ + D &amp;rarr; 가로 분할&lt;/li&gt;
&lt;li&gt;⇧⌘ + D &amp;rarr; 세로 분할&lt;/li&gt;
&lt;li&gt;⌘ + ⌥ + &amp;larr;/&amp;rarr; &amp;rarr; 탭 이동&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;원하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;wezterm.mux&lt;span&gt;&amp;nbsp;&lt;/span&gt;API로 tmux-style 세션 스크립트를 작성할 수도 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;6️⃣ 자동화 / 조건부 설정 예시 (고급)&lt;/h2&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;code&gt;local wezterm = require(&quot;wezterm&quot;)

local config = {}

if wezterm.target_triple == &quot;x86_64-apple-darwin&quot; then
  config.font_size = 13.0
else
  config.font_size = 11.0
end

config.color_scheme = &quot;Catppuccin Mocha&quot;
config.enable_scroll_bar = false

return config
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; macOS / Linux 환경을 구분하거나, 화면 크기에 맞춰 다르게 설정할 수 있음.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;7️⃣ 추천 추가 설정&lt;/h2&gt;
&lt;table style=&quot;color: #000000; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;목적&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설정&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;창 투명도&lt;/td&gt;
&lt;td&gt;window_background_opacity = 0.9&lt;/td&gt;
&lt;td&gt;배경 투명 효과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;블러 효과&lt;/td&gt;
&lt;td&gt;macos_window_background_blur = 20&lt;/td&gt;
&lt;td&gt;macOS 특유의 유리 느낌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;애니메이션 제거&lt;/td&gt;
&lt;td&gt;animation_fps = 1&lt;/td&gt;
&lt;td&gt;퍼포먼스 향상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU 프론트엔드&lt;/td&gt;
&lt;td&gt;front_end = &quot;WebGpu&quot;&lt;/td&gt;
&lt;td&gt;렌더링 성능 개선&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;8️⃣ 문제 해결 팁&lt;/h2&gt;
&lt;table style=&quot;color: #000000; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;해결 방법&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;폰트 깨짐&lt;/td&gt;
&lt;td&gt;Nerd Font 설치 후&lt;span&gt;&amp;nbsp;&lt;/span&gt;wezterm.font_with_fallback&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;터미널 컬러 이상&lt;/td&gt;
&lt;td&gt;termguicolors&lt;span&gt;&amp;nbsp;&lt;/span&gt;활성화 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;키바인딩 안 먹힘&lt;/td&gt;
&lt;td&gt;CMD 키 &amp;rarr; &amp;ldquo;macOS 단축키 충돌&amp;rdquo; 확인 (시스템 설정에서 수정 가능)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;  추천 확장 테마 모음&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Catppuccin:&lt;span&gt;&amp;nbsp;&lt;/span&gt;color_scheme = &quot;Catppuccin Mocha&quot;&lt;/li&gt;
&lt;li&gt;Tokyo Night:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;Tokyo Night Storm&quot;&lt;/li&gt;
&lt;li&gt;One Dark (JetBrains 스타일):&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;OneHalfDark&quot;&lt;/li&gt;
&lt;li&gt;Gruvbox Dark:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;Gruvbox Dark (Hard)&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;미리보기:&lt;/p&gt;
&lt;pre class=&quot;dart&quot; style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;code&gt;wezterm show-colors
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;✅ 정리 요약&lt;/h2&gt;
&lt;table style=&quot;color: #000000; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;권장 값&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;폰트&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;JetBrainsMono Nerd Font&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;테마&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Gruvbox Dark / Catppuccin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;렌더링 엔진&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;WebGPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;탭 관리&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;CMD + T / W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;분할 단축키&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;CMD + D,&lt;span&gt;&amp;nbsp;&lt;/span&gt;SHIFT + CMD + D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;배경 효과&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;투명도 0.9 + Blur 20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;기본 셸&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Zsh&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&amp;copy; 2025@goooodday | 본 글은 AI 초고를 바탕으로 작성되었으며,&lt;br /&gt;무단 전재&amp;middot;배포&amp;middot;상업적 이용을 금지하며, 인용시 출처를 표기해주세요.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Others</category>
      <category>WezTerm #terminal #macOS</category>
      <author>AI를 활용한 지식 정보화</author>
      <guid isPermaLink="true">https://agoge-ai.tistory.com/6</guid>
      <comments>https://agoge-ai.tistory.com/6#entry6comment</comments>
      <pubDate>Sat, 11 Oct 2025 12:06:10 +0900</pubDate>
    </item>
    <item>
      <title>맥북 터미널 앱 Ghostty vs WezTerm 비교</title>
      <link>https://agoge-ai.tistory.com/5</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Ghostty vs WezTerm&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;중심으로 실제 사용자 후기와 특징, 장단점을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;맥북 사용 기준(iTerm2 경험자 시점)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;으로 비교하여 정리 함.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;  개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두개의 터미널에 대한 간단한 비교 내용&lt;/p&gt;
&lt;table style=&quot;color: #000000; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Ghostty&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;WezTerm&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;개발 언어&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Zig&lt;/td&gt;
&lt;td&gt;Rust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;GPU 가속&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;✅ 있음 (시스템별 최적화)&lt;/td&gt;
&lt;td&gt;✅ 있음 (Cross-platform Vulkan/OpenGL)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;지원 OS&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;macOS, Linux (Windows 예정)&lt;/td&gt;
&lt;td&gt;macOS, Linux, Windows, BSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;설정 방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;TOML / YAML 스타일 (간결)&lt;/td&gt;
&lt;td&gt;Lua 스크립트 기반 (유연하지만 복잡)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;포커스 철학&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;심플하고 네이티브한 터미널&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;파워유저를 위한 확장형 터미널&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;  성능 / 반응성&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Ghostty&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매우 빠른 부팅 속도와 부드러운 스크롤.&lt;/li&gt;
&lt;li&gt;GPU 글꼴 렌더링 품질이 좋아서 폰트 선명도 높음.&lt;/li&gt;
&lt;li&gt;스크롤이나 텍스트 렌더링 시 체감상 iTerm2보다 가볍다는 평가 많음.&lt;/li&gt;
&lt;li&gt;다만 장시간 사용 시 GPU 점유율이 약간 높은 편이라는 후기도 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;WezTerm&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Rust 기반으로 매우 안정적이며 대용량 로그나 tmux-like 분할에서도 빠름.&lt;/li&gt;
&lt;li&gt;복잡한 화면 출력에서도 버벅임 거의 없음.&lt;/li&gt;
&lt;li&gt;GPU 가속 성능은 Ghostty와 비슷하거나 약간 더 안정적이라는 평가.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;요약:&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능 자체는 비슷하지만,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Ghostty는 부드럽고 네이티브 느낌&lt;/b&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;WezTerm은 안정적이고 무거운 작업에 강함&lt;/b&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;⚙️ 설정과 커스터마이징&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Ghostty&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설정이 간단하고 직관적.&lt;/li&gt;
&lt;li&gt;font = &quot;JetBrainsMono Nerd Font&quot; theme = &quot;Gruvbox Dark&quot; shell = &quot;/bin/zsh&quot;&lt;/li&gt;
&lt;li&gt;기본값이 좋아서 &amp;lsquo;설정 파일 없이도&amp;rsquo; 바로 사용 가능.&lt;/li&gt;
&lt;li&gt;다만 세밀한 자동화나 조건부 설정은 어려움.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;WezTerm&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Lua로 설정 파일 작성 (wezterm.lua).&lt;/li&gt;
&lt;li&gt;local wezterm = require 'wezterm' return { font = wezterm.font('JetBrainsMono Nerd Font'), color_scheme = &quot;Gruvbox Dark&quot;, enable_tab_bar = false, }&lt;/li&gt;
&lt;li&gt;조건 분기, 환경 감지, 키매핑 로직 등을 자유롭게 작성 가능.&lt;/li&gt;
&lt;li&gt;대신 러닝 커브 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;요약:&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순함 원하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Ghostty&lt;/b&gt;,&lt;br /&gt;세밀한 제어&amp;middot;자동화 원하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;WezTerm&lt;/b&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt; ️ UI / UX&lt;/h2&gt;
&lt;table style=&quot;color: #000000; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Ghostty&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;WezTerm&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;디자인&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;매우 깔끔, macOS 네이티브 감성&lt;/td&gt;
&lt;td&gt;약간 투박하지만 기능적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;탭/창 관리&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;OS 창 단위로만 (탭 없음, 계획 중)&lt;/td&gt;
&lt;td&gt;내장 탭/분할 지원 (tmux 대체 수준)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;단축키/바인딩&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;단순, 기본 macOS 스타일&lt;/td&gt;
&lt;td&gt;완전 사용자 정의 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;폰트/렌더링&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;고품질 렌더링, 다국어 호환 좋음&lt;/td&gt;
&lt;td&gt;렌더링 좋지만 설정 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;요약:&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Ghostty는 미니멀하고 깔끔&lt;/b&gt;,&lt;br /&gt;&lt;b&gt;WezTerm은 기능이 많지만 약간 개발툴 느낌&lt;/b&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;  실사용자 후기 (맥북 기준)&lt;/h2&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  Ghostty&lt;/h3&gt;
&lt;blockquote style=&quot;color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;iTerm2보다 훨씬 빠르고 깔끔하다. 그냥 쓰기 좋다.&amp;rdquo;&lt;br /&gt;&amp;ldquo;다만 아직 탭이 없고, 설정이 단순해서 자동화엔 약함.&amp;rdquo;&lt;br /&gt;&amp;ldquo;테마와 폰트 매칭이 완벽해 Neovim이 더 예뻐보임.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  WezTerm&lt;/h3&gt;
&lt;blockquote style=&quot;color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;처음엔 설정이 어렵지만, 일단 세팅 끝나면 tmux 대체급이다.&amp;rdquo;&lt;br /&gt;&amp;ldquo;Lua 설정 덕분에 장비별 맞춤 세팅 가능.&amp;rdquo;&lt;br /&gt;&amp;ldquo;터미널로 이 정도 유연성 있는 건 처음 봤다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;  추천 조합&lt;/h2&gt;
&lt;table style=&quot;color: #000000; text-align: start; border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;사용자 스타일 추천&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;터미널&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;이유&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;빠르고 깔끔한 기본 터미널, 설정 최소화&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Ghostty&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;단순함과 시각적 완성도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;커스터마이징, tmux 대체, 장시간 세션 관리&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;WezTerm&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;기능 강력, 확장성 높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;AI 보조, 명령 블록 편집 / 직관적 UI&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Warp&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;완전히 다른 접근 (AI 중심)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;안정적이고 익숙한 macOS 기본 경험 유지&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;iTerm2&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;검증된 기능과 안정성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;  결론 요약&lt;/h2&gt;
&lt;table style=&quot;color: #000000; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Ghostty&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;WezTerm&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;속도/성능&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;⚡ 매우 빠름, 부드러운 스크롤&lt;/td&gt;
&lt;td&gt;⚙️ 빠르고 안정적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;설정 편의성&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;  단순 / 직관적&lt;/td&gt;
&lt;td&gt;  강력하지만 복잡&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;기능성&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;  최소기능 / 깔끔&lt;/td&gt;
&lt;td&gt;  고급 기능 풍부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;디자인&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;  macOS 감성&lt;/td&gt;
&lt;td&gt;  실용적, 기능 중심&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;커뮤니티/안정성&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;  빠르게 성장 중&lt;/td&gt;
&lt;td&gt;  성숙하고 안정적&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;결론:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;개발자용 터미널로 장기적으로 쓸 계획&lt;/b&gt;이라면 &amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;WezTerm&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;가볍고 미려한 UI로 빠르게 쓰고 싶다면&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Ghostty&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&amp;copy; 2025 @goooodday&amp;nbsp; | &lt;span&gt;&amp;nbsp;&lt;/span&gt;본 글은 생성형 AI를 활용한 초고를 바탕으로 작성되었으며, 저작권은 작성자에게 있습니다.&lt;br /&gt;글의 무단 복제, 전재, 배포, 상업적 이용을 엄격히 금지하며, 인용 시 반드시 출처를 명시해 주시기 바랍니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Others</category>
      <category>macOS #ghostty #wezterm #terminal</category>
      <author>AI를 활용한 지식 정보화</author>
      <guid isPermaLink="true">https://agoge-ai.tistory.com/5</guid>
      <comments>https://agoge-ai.tistory.com/5#entry5comment</comments>
      <pubDate>Sat, 11 Oct 2025 11:54:32 +0900</pubDate>
    </item>
    <item>
      <title>Agoge AI 블로그 소개</title>
      <link>https://agoge-ai.tistory.com/notice/3</link>
      <description>&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;150&quot; data-start=&quot;109&quot; data-ke-size=&quot;size23&quot;&gt;  Agoge AI: 자율화 시스템 개발과 연구 사례 공유 블로그&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;304&quot; data-start=&quot;152&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Agoge AI&lt;/b&gt;는 이름에서 알 수 있듯, 고대 스파르타의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Agoge 훈련 체계&lt;/b&gt;에서 영감을 받았습니다. 체계적이고 실전 중심의 학습과 훈련을 통해 성장하듯, 이 블로그는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;자율화 시스템 개발과 연구 사례를 체계적으로 배우고 실습할 수 있는 공간&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;486&quot; data-start=&quot;306&quot; data-ke-size=&quot;size16&quot;&gt;Agoge AI는 로봇, 드론, 자동화 시스템, AI, Rust 프로그래밍 등 첨단 기술 분야에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;시스템을 설계하고 직접 코딩해 볼 수 있는 실습 중심 학습 자료&lt;/b&gt;를 제공합니다. 단순한 이론을 넘어, 실제 구현 과정과&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;연구 사례를 함께 소개&lt;/b&gt;하며 개발자와 연구자가 실전에서 활용할 수 있는 지식을 공유합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;517&quot; data-start=&quot;488&quot; data-ke-size=&quot;size16&quot;&gt;블로그는 세 가지 핵심 메뉴로 구성되어 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-end=&quot;709&quot; data-start=&quot;519&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;586&quot; data-start=&quot;519&quot;&gt;&lt;b&gt;Tech Research&lt;/b&gt;: 로봇, 드론, 자동화 시스템 관련 연구 사례와 학계&amp;middot;산업계 최신 기술 동향 분석&lt;/li&gt;
&lt;li data-end=&quot;653&quot; data-start=&quot;587&quot;&gt;&lt;b&gt;Agent Coding&lt;/b&gt;: Rust, 임베디드, 자율화 알고리즘 실습과 AI 기반 에이전트/로봇 제어 코드&lt;/li&gt;
&lt;li data-end=&quot;709&quot; data-start=&quot;654&quot;&gt;&lt;b&gt;Tech Insights&lt;/b&gt;: 실전 프로젝트, 연구 응용 사례, 개발 팁과 최적화 노하우&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;823&quot; data-start=&quot;711&quot; data-ke-size=&quot;size16&quot;&gt;Agoge AI는 단순한 기술 블로그가 아니라,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;자율화 시스템 개발과 연구 사례를 연결&lt;/b&gt;하는 공간입니다. 방문자가 직접 코딩하고, 실험하며, 연구 사례를 이해하고 응용할 수 있도록 안내합니다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;823&quot; data-start=&quot;711&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;823&quot; data-start=&quot;711&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;908&quot; data-start=&quot;825&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Agoge AI와 함께라면, 자율화 시스템 개발과 연구 사례를 직접 경험하며 성장할 수 있습니다. 기술과 연구를 연결하는 여정을 함께해요.&quot;&lt;/p&gt;</description>
      <author>AI를 활용한 지식 정보화</author>
      <guid isPermaLink="true">https://agoge-ai.tistory.com/notice/3</guid>
      <pubDate>Sun, 7 Sep 2025 12:26:18 +0900</pubDate>
    </item>
    <item>
      <title>로봇 컨트롤러 개발 및 활용을 위한 조사</title>
      <link>https://agoge-ai.tistory.com/1</link>
      <description>&lt;h1 style=&quot;color: #000000; text-align: start;&quot; data-pm-slice=&quot;0 0 []&quot;&gt;&lt;span&gt;로봇 컨트롤러용 MCU/보드 비교 보고서&lt;/span&gt;&lt;/h1&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;1. 개요&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;본 보고서는 다양한 로봇 컨트롤러 개발 시 활용 가능한 MCU 및 SBC 보드(RP2040, Teensy, STM32 시리즈, ESP32, 산업용 ABB/KUKA 컨트롤러 등)를 대상으로 성능, 실시간성, Rust 개발 지원, 확장성 등을 비교하여 정리한 자료입니다. 또한 각 보드의 아키텍처 예시와 활용 사례를 그림으로 시각화하여 참고할 수 있도록 구성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;2. 각 보드/MCU 개요&lt;/span&gt;&lt;/h2&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;2.1 RP2040 (Raspberry Pi Pico)&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;CPU:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Dual-core ARM Cortex-M0+, 133 MHz&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;RAM/Flash:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;264 KB / 2 MB&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;I/O:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;PWM 8~16채널, ADC 3채널, I2C/SPI/UART 지원&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;특징:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;초저가, 듀얼코어, PIO 기능, Rust 지원(&lt;/span&gt;&lt;span&gt;rp-hal&lt;/span&gt;&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;embassy&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;추천 용도:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;교육용, 연구용, 간단한 로봇 프로토타입&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;아키텍처 예시:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Core0: 모션 제어, Core1: 센서 읽기/통신&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;2.2 Teensy 4.1&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;CPU:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Cortex-M7, 600 MHz&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;RAM/Flash:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;1024 KB / 8 MB&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;I/O:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;PWM/DAC/ADC 풍부, I2C/SPI/UART/CAN 지원&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;특징:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;높은 연산 성능, USB/SD카드 지원, Rust 지원(&lt;/span&gt;&lt;span&gt;teensy4-rs&lt;/span&gt;&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;cortex-m-rt&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;추천 용도:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;고성능 소형 로봇, 프로토타입 연구용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;아키텍처 예시:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;단일 코어에서 모션 제어, 센서 처리 및 통신 수행&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;2.3 STM32 시리즈 (F4/F7/H7)&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;CPU:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Cortex-M4/M7, 100~400 MHz&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;RAM/Flash:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;수십~수백 KB / 수 MB&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;I/O:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;PWM/ADC/DAC, SPI/I2C/UART, CAN 지원&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;특징:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;산업용 MCU, 실시간성 우수, Rust 지원(&lt;/span&gt;&lt;span&gt;stm32-rs&lt;/span&gt;&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;embassy-stm32&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;추천 용도:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;연구용, 산업용 로봇 프로토타입&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;아키텍처 예시:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;RTOS 활용, 모션 제어, 센서 읽기, 통신, 안전 모듈 분리 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;2.4 ESP32-S3&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;CPU:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Dual-core Xtensa LX7 또는 RISC-V 160~240 MHz&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;RAM/Flash:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;512 KB / 4 MB&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;I/O:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;PWM 16~20채널, ADC 12bit, I2C/SPI/UART 지원&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;특징:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Wi-Fi/BLE 내장, IoT/원격 제어 적합, Rust 지원(&lt;/span&gt;&lt;span&gt;esp-rs&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;추천 용도:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;원격 모니터링, IoT 연동 로봇&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;아키텍처 예시:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Core0: 모터/센서 제어, Core1: 무선 통신/데이터 로깅&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;2.5 ABB/KUKA 상용 컨트롤러&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;CPU:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;x86/ARM 고성능 멀티코어, GB 단위 RAM&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;I/O:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;EtherCAT, CAN, ProfiNet 등 산업용 버스 지원&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;특징:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;실시간성 최상, 안전 인증 ISO 10218, ISO 13849, ISO 3691-4 등, RAPID/KRL 언어 기반&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;추천 용도:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;산업 현장용 로봇&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;아키텍처 예시:&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;모션 제어 전용 코어, 안전 모듈, 센서/비전/네트워크 전용 코어 분리&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;3. Rust 개발 관점&lt;/span&gt;&lt;/h2&gt;
&lt;table style=&quot;color: #000000; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;보드/MCU&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;RUST 지원&lt;/td&gt;
&lt;td&gt;&lt;span&gt;HAL/Crate&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;비고&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;RP2040&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;rp-hal, embassy&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;듀얼코어 활용 가능, 교육/연구용 적합&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;Teensy 4.1&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;teensy4-rs, cortex-m-rt&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;고성능, PWM/DAC 풍부&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;STM32 F4/F7&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;stm32-rs, embassy-stm32&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;산업용 프로토타입 적합, 안정적 HAL 지원&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;ESP32-S3&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;esp-rs&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Wi-Fi/BLE IoT 로봇용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;ABB/KUKA&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;제한적&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;RAPID/KRL&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;산업용, 실시간/안전성 최적화, Rust 비권장&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;4. 로봇 컨트롤러용 비교표&lt;/span&gt;&lt;/h2&gt;
&lt;table style=&quot;color: #000000; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;항목&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;RP2040&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Teensy 4.1&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;STM32F4/F7&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;ESP32-S3&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;ABB/KUKA 컨트롤러&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;CPU&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Dual-core Cortex-M0+ 133MHz&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Cortex-M7 600MHz&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Cortex-M4/M7 100~400MHz&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Dual-core Xtensa LX7 / RISC-V 160~240MHz&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;x86/ARM 멀티코어 고성능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;RAM/Flash&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;264KB / 2MB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;1024KB / 8MB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;수십~수백 KB / 수 MB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;512KB / 4MB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;GB 단위&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;PWM 채널&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;8~16&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;30+&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;16~32&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;16~20&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;수십~수백&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;ADC/DAC&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;3 ADC, DAC 없음&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;ADC 풍부, DAC 2개&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;풍부&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;ADC 12bit, DAC 없음&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;매우 다양, 고속&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;I2C/SPI/UART&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;2/2/2&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;풍부&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;풍부&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;풍부&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;EtherCAT, CAN, ProfiNet 등 산업용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;실시간성&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&amp;mu;s 단위&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&amp;mu;s 단위&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&amp;mu;s 단위&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;제한적, FreeRTOS 필요&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;ns~&amp;mu;s 수준, 다축 동기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;멀티코어&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;2코어&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;단일&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;단일&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;2코어&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;다중코어&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;가격&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;5~6 USD&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;20~25 USD&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;3~20 USD&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;5~10 USD&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;수천~수만 USD&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;안전 인증&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;없음&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;없음&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;없음&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;없음&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;ISO 10218, ISO 13849, ISO 3691-4 등&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;추천 용도&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;교육/연구, 간단 로봇&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;고성능 소형 로봇&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;연구/산업용 프로토타입&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;IoT/원격 제어&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;산업 현장용, 정밀/안전 제어&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;5. 아키텍처 예시 시각화&lt;/span&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #000000; text-align: start;&quot; data-spread=&quot;true&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;RP2040&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 듀얼코어 분리&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;Core0: 모터 제어 (PWM), 역기구학 연산&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Core1: 센서 데이터 수집, UART/I2C 통신&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Teensy 4.1&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 단일 고성능 코어&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;단일 코어에서 모션 제어, 센서 처리, 통신 통합 수행&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;STM32F4/F7&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: RTOS 기반 멀티태스킹&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;Task1: PWM 모터 제어&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Task2: 센서 데이터 읽기 (IMU/엔코더)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Task3: 통신/로깅&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;ESP32-S3&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 듀얼코어 IoT 모드&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;Core0: 모터/센서 제어&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Core1: Wi-Fi/BLE 통신 및 데이터 처리&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;ABB/KUKA 컨트롤러&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 산업용 분리 구조&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;Core1: 모션 제어 (다축 동기)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Core2: 안전 모듈 처리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Core3: 센서/비전/네트워크 처리&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;6. 결론 및 추천&lt;/span&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #000000; text-align: start;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;교육용 / 연구용 소형 로봇&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; RP2040&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;고성능 프로토타입 소형/중형 로봇&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; Teensy 4.1&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;실시간 산업용 프로토타입 로봇&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; STM32F4/F7&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;IoT/원격 로봇&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; ESP32-S3&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;산업용 상용 로봇&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; ABB/KUKA&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;7. 참고자료&lt;/span&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #000000; text-align: start;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/rp-rs/rp-hal&quot;&gt;&lt;span&gt;Raspberry Pi Pico RP2040 HAL&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mciantyre/teensy4-rs&quot;&gt;&lt;span&gt;Teensy4-rs HAL&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/stm32-rs/stm32-rs&quot;&gt;&lt;span&gt;STM32 Rust HAL&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/esp-rs/esp-hal&quot;&gt;&lt;span&gt;ESP32 Rust HAL&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a&gt;UDOO Dual / Quad 보드&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;ABB / KUKA 공식 문서 및 산업용 로봇 제어 관련 표준 (ISO 10218, ISO 13849, ISO 3691-4)&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>Inovation Lab</category>
      <category>로봇컨트롤러 #STM32 #RP2040 #ESP32</category>
      <author>AI를 활용한 지식 정보화</author>
      <guid isPermaLink="true">https://agoge-ai.tistory.com/1</guid>
      <comments>https://agoge-ai.tistory.com/1#entry1comment</comments>
      <pubDate>Sun, 7 Sep 2025 11:58:45 +0900</pubDate>
    </item>
  </channel>
</rss>