본문 바로가기
[클린 아키텍처] 1부 소개 1. 설계와 아키텍처란? 좋은 소프트웨어 설계의 목표라는 것은 무엇일까? 소프트웨어 아키텍처의 목표는 필요로 하는 시스템을 생성하는데에 요구되는 인력을 최소화하는 것이다. 설계의 품질을 재는 척도는 무엇일까? 고객의 요구를 만족시키는 데에 드는 비용이다. 새로운 기능을 출시할 때마다 드는 비용이 증가한다면, 그것은 나쁜 설계이다. "시장에 제품을 출시하는 것이 먼저야! 코드는 나중에 정리하면 되니까!" 이는 흔한 거짓말이다. 코드를 나중에 정리하는 경우는 없다. 왜냐? 시장의 압박은 항상 존재하니까. "다시하면 잘해야지" 혹은 "나중에 시간이 많으면 제대로 잘 할거니까!"라는 자기 과신은 결국 틀린 선택이 된다. 2. 두 가지 가치에 대한 이야기 행위인가 구조인가? 개발자라면 이 두 가지 가치 모두 중요.. 2023. 5. 2.
[CMake] add_custom_target cannot create target package 에러코드 --- stderr: app CMake Error at /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:213 (add_custom_target): add_custom_target cannot create target "app" because another target with the same name already exists. The existing target is an executable created in source directory "/home/id/ros2_ws/src/app". See documentation for policy CMP0002 for more details. Call Stack (.. 2023. 3. 10.
[Micro-ROS] Micro XRCE-DDS 특징 이전에 언급한 것처럼 Micro-ROS는 DDS를 차용하여 운용하는 시스템입니다. Micro XRCE-DDS라는 eProsima에서 제작한 DDS를 기본적으로 사용합니다. Micro XRCE-DDS는 OMG의 eXtremely Resource Constrained Environment standard 를 준수한 DDS로서, 제한된 메모리를 가진 환경에서 사용할 수 있는 DDS입니다. DDS-XRCE DDS-XRCE 프로토콜의 목표는 제한된 메모리 가진 디바이스의 데이터를 Global-Data-Space(PC와 같은) 환경에 접근할 수 있도록하는 것입니다. DDS-XRCE 프로토콜 속에서 제한된 메모리 디바이스와 PC의 연결 구조는 서버-클라이언트 구조를 가집니다. 디바이스는 XRCE Client로서, P.. 2023. 2. 18.
[Micro-ROS] 특징 Micro-ROS를 사용하고 있지만, 이에 대한 특징을 제대로 이해하지 못하는 것처럼 느껴져서 이를 공부하며 정리해보았습니다. Micro-ROS의 특징 ROS 주요 컨셉을 담고 있는 마이크로컨트롤러 최적용 클라이언트 API ROS2에서 지원하는 노드, 토픽, 클라이언트와 서버, 라이프사이클 등의 개념을 차용하였습니다. 마이크로로스의 클라이언트 API는 rcl과 rclc 기반으로 생성되었습니다. ROS2와 자연스러운 연동 MicroROS 에이전트는 MicroROS로 작성된 MCU를 노드로 만들어 ROS2시스템에 연결을 자연스럽게 만들어줍니다. 이를 통해 사용자는 마치 마이크로컨트롤러의 기능들을 일반 노드처럼 다룰 수 있고 다른 ROS2 도구들을 활용할 수 있게 해줍니다. 리소스가 제한된 환경에서도 사용할 .. 2023. 2. 18.
[물류] 물류의 기본 물류란 물류는 생산자와 소비자의 시공간적 문제를 해결하는 활동이다. 시대와 환경에 따라 정의가 약간씩 다르지만, 물류란 일반적으로 물류는 물적 유통의 약자이다. 이는 물건의 흐름을 의미한다. 물류는 생산자로부터 소비자에게까지 물자를 이동시키는 모든 활동을 의미한다. 물류는 제품을 물리적으로 생산자로부터 소비자까지 이동시키는 데에 필요한 보관, 하역, 운송, 포장 그리고 정보처리 등의 모든 행위이다. 물류는 생산자와 소비자 사이에 존재하는 시공간적 효율을 증대시키는 행위이다. 물류는 Logistics 관점에서 원부자재 조달, 제품 생산, 판매, 반품, 회수 그리고 폐기까지 모든 절차에 대해 전략적이고 통합적인 활동을 의미한다. 원부자재* : 생산의 원료, 출고상품 포장에 활용되는 자재들, 충진재들, 부가작.. 2023. 1. 19.
[철학] 논어 - 위정편 위정편 2-11 온고이지신 가이위사의(溫故而知新 可以爲師矣) 옛 것들을 잘 익혀 새로운 것을 알고 깨닫게 된다면 스승의 지위까지 능히 갈 수 있다. 2-15 학이불사즉망 사이불사즉태(學而不思則罔 思而不學則殆) 배우기만 하고 생각하지 않으면 그 뜻을 터득할 수 없고 생각만 하고 배우지 않으면 위태롭다. 2-24 비기귀이제지 천야 (非其鬼而祭之 諂也) 견의불위 무용야(見義不爲 無勇也) 자기 조상이 아닌데도 제사를 지내는 것은 아첨하는 것이다. 옳은 것이 무엇인지 아는 것에도 그것을 실행하지 않음은 용기가 없는 거다. 내 생각 온고이지신 가이위사의는 뉴턴의 말 '내가 더 멀리 보았다면 이는 거인들의 어깨 위에 올라서 있었기 때문이다' 와 같습니다. 새로운 것은 인류가 쌓아놓은 지식을 따듯하게 요리해서 만들어낸.. 2022. 11. 20.
[철학] 논어 - 학이편 논어 : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 논어를 읽고 인상 깊은 구절을 남겨놓은 뒤 그것에 대한 내 생각을 써보았습니다. 논어가 글 자체는 어렵지 않으나 그 문장을 내 생각으로 만드는 것은 시간이 좀 걸리네요. 첫 번째 편 학이입니다. 학이편에서 인상 깊은 구절을 모았습니다. 공자께서 말씀하셨다. 1-1 학이시습지 불역열호(學而時習之 不亦說乎) 배우고 그 배운 것을 때에 맞게 익혀가면 기쁘지 않겠는가? 유붕자원방래, 불역낙호(有朋自遠方來 不亦樂乎) 먼 곳에서 벗이 찾아오면 즐겁지 않겠는가? 인부지불온 불역군자호(人不知不慍 不亦君子乎) 다른 사람들이 내가 덕을 쌓은 것을 알아주지 않아도 노여움을 가지지 않으면 군자답지 않겠는가? 1-16 불환인.. 2022. 11. 19.
[Robotics] Trajectory 생성 - Joint Space & Cartesian Space Trajectory Trajectory는 로봇이 가진 각각의 자유도에 대해 위치, 속도, 가속도를 시간에 따라 표현한 것입니다. 이와 달리 Path는 시간 정보가 빠진 상태로, 지나갈 경로만을 이야기합니다. 엔지니어는 매니퓰레이터 엔드이펙터의 도착 지점에 요구되는 조인트의 각도 값만 계산하여 엑추에이터에 명령을 줄 수 있습니다. 하지만 이 경우 워크스테이션 내에 있는 장애물을 피할 수도 없고, 이동 중 발생하는 진동에 의해 기구 자체에 손상을 입힐 수도 있습니다. 따라서 이를 막기 위해 엔지니어는 여러 상황을 고려하여 적합한 트래젝토리를 생성해야합니다. 트래젝토리 생성은 일반적으로 60~2000Hz 생성이 되며, 이러한 트래젝토리 생성 주기를 Path-update rate 라 일컫습니다. Trajecto.. 2022. 11. 14.
[ROSCon] ROSCon2022 교토 참관 후기 2022년 10월 20일부터 10월 21일까지 일본 교토에서 열리는 ROSCon 2022에 참석했습니다. 코로나 이후로 처음 오프라인으로 개최되는 ROSCon였습니다. 과거 처음 ROSCon의 존재를 인지했을 때, '겨우 미들웨어 소프트웨어일 뿐인데, 컨퍼런스를 국제적으로 크게 하다니..' 라는 생각과 '도대체 저기 모인 사람들은 어떤 이야기들을 주고 나눌까' 라는 생각이 들었습니다만 지금은 '그럴만 하네'라는 생각합니다. 이 소프트웨어가 품고있는 자원이 다 다루기에는 너무나 방대하니까요. 19년에 처음 ROS 멜로딕을 만난 후 참가해보는 오프라인 로스 커뮤니티이며, 또 저희 회사 Floatic이 스폰서로 참여해서 개인적으로는 상당히 기대되었네요. 로스콘은 2개의 세미나 장소과 로봇 전시장으로 구성되어있.. 2022. 10. 29.
로봇에 대한 반응 인류 역사에서 생명체를 제외하고는 본인의 의지로 스스로 움직이는 물체를 인간이 마주한 적이 없습니다. "차량은? 도로 위에서 스스로 움직이잖아?" 라는 의문을 보일 수 있지만, 스스로 움직이는 자율주행차량은 아직 대중화가 된 것이 아니며, 반대로 일반 차량은 '조종자'에 의해 움직인다는 생각이 지배적입니다. 로봇 기업이 나면서 일반 사람들이 '스스로 움직이는 물체'를 마주할 가능성이 생겼고, 그러한 존재에 대한 사람들의 반응도 살펴볼 수 있게 되었습니다. 이 글은 온라인에서 찾을 수 있는 로봇에 대한 사람들의 반응을 기록하는 목적으로 만들었습니다. 배달 로봇 #로봇학대 https://www.youtube.com/watch?v=MWTQb4cjmnA https://www.youtube.com/watch?v=.. 2022. 10. 10.
[DDS] DDS와 RTPS 잡설 Micro-ROS 때문에 DDS도 공부하게 되네요. 🤨 Micro-ROS는 일반적인 DDS 말고 DDS-XRCE(eXtremely Resource Constrained Environments DDS)라는 리소스가 제한된 환경에서 사용하는 DDS가 사용합니다. 마이크로로스에서 발생하는 문제를 다루기 위해서는 DDS-XRCE를 이해해야하는데, 그것에 앞서 일반적인 DDS를 다루어보겠습니다. (Micro-ROS는 eProsima의 Micro XRCE-DDS를 사용합니다. eProsima는 ROS2에 기본DDS인 FAST-DDS를 만든 곳입니다.) 시작 아마 ROS2로 넘어오면서 가장 당황스러울 것이 ROS1에 없었던 DDS일 것입니다. ROS1이 실제 산업에서 쓰기에 부적합했기 때문에, 안정성이나 보안 .. 2022. 10. 2.
[전자] 환류 다이오드(Free Wheeling Diode)와 릴레이 스위치 설계 환류 다이오드 (Free Wheeling Diode) 인덕터에 충전된 전하에 의해 회로가 손상되지 않도록 병렬로 연결한 다이오드를 말합니다. 스위치와 인덕터가 있는 회로에서 스위치가 ON에서 OFF로 전환되었을 때 인덕터에 저장된 전하가 방출되어야합니다. 만약 환류다이오드가 없다면, 스위치 부분에 인덕터의 역기전력에 의해 스파크가 발생하게 됩니다. 이 때의 전압은 dt가 매우 낮아 전원에 비해 매우 높은 값을 가지며, 이 스파크 때문에 스위치가 파손될 수가 있습니다. 따라서 인덕터 부하에 다이오드를 병렬로 연결하여 서지를 방지합니다. 릴레이 스위치 위 같은 이유로 릴레이 스위치 설계 시에, 코일에 환류 다이오드를 달아놓음으로 스위치가 손상되는 것을 막아줍니다. 2022. 9. 18.