전체 글 13

#4 SITL 환경에서 ROS Camera Topic을 이용해 Aruco Marker 검출하기

Aruco Marker는 검은색 테두리와 내부 이진 행렬로 구성된 정사각형 마커입니다.로봇분야에서 많이 사용되며 다양한 크기로 QR코드 같은 패턴이 있어 각각의 패턴엔 ID가 할당되어 식별될 수 있습니다.이 Aruco Marker를 이용해 카메라의 위치를 추적하고, 물체의 위치를 추적할 수 있습니다.이번엔, PX4 Gazebo-Classic 환경에서 Aruco Marker를 추가하고, 인식해 보도록 하겠습니다.환경Ubuntu 20.04ROS1 noeticPX4 1.15.0ros-noetic-mavros 1.20.11. PX4 시뮬레이션 환경에 Aruco Marker를 추가하기cd ~/PX4-Autopilotsource /opt/ros/noetic/setup.bashsource Tools/simulatio..

드론/PX4 2026.05.24

#3 uXRCE-DDS와 ROS2를 활용한 드론 경로 가시화

이전 게시글에서는 MAVlink Router를 이용해 Endpoint에서 MAVlink 데이터를 주고받는 방법에 대해 알아봤습니다.이번에는, MAVlink 데이터를 ROS 토픽처럼 볼 수 있는 uXRCE-DDS에 대해 알아보고 드론의 MAVlink 데이터를 ROS2 토픽으로 변환해 이를 Rviz로 가시화해보겠습니다.환경Ubuntu 20.04ROS2 FoxyPX4 1.15.0uXRCE-DDS 2.4.3px4_msgs 1.151. uXRCE-DDSPX4는 MAVlink 데이터를 통해 드론의 상태를 알릴 수 있고, 명령과 제어가 가능합니다.가만히 살펴보면, MAVlink의 데이터 통신 방식은 ROS에서 데이터 통신방식과 개념이 비슷합니다.MAVlink uORB 메시지를 마치 ROS의 Topic처럼 Publi..

드론/PX4 2026.05.10

#1 dq 변환

3상 모터는 시변계수가 포함되어 있어 모델링과 제어기 설계가 쉽지 않습니다.하지만, dq변환을 사용하면 전동기에 포함된 다양한 성분들의 시변계수를 제거할 수 있어 제어기 설계가 용이해집니다.이번에는 3상 모터 제어기 설계에 사용되는 dq변환에 대해서 알아보겠습니다.1. 정지좌표계 변환dq변환의 가장 큰 목적은 "교류의 파형을 직류처럼 해석"하는 것입니다.그래서 abc 좌표계의 변수를 각속도 $\omega$로 회전하는 회전좌표계의 $d^\omega - q^\omega$ 변수로 변환해 주는 것이 목적입니다.$\omega$의 속도로 회전하는 좌표계에 $\omega$의 속도로 움직이는 교류파형을 올려놓으면 직류처럼 보인다고 생각하시면 됩니다.DQ변환은 기본적으로 2번에 걸쳐서 진행됩니다.정지좌표계 ($\alph..

전력전자/모터 2026.05.09

#1 ROS Sensor Topic

Ros는 기능을 Node로 나누고,Node끼리는 Topic을 통해 데이터를 주고 받을 수 있습니다.배터리 노드 : 배터리의 전압, 전류, 용량등모터 제어 노드 : 속도 및 위치등을 제어가 있고, 배터리 전압에 따른 비상정지 기능을 구현한다면배터리 노드는 지속적으로 자신의 전압과 전류 데이터Topic을 Publish합니다.모터 제어 노드는 전압과 전류 데이터Topic을 Subscribe해서 모터를 제어하는 방식이죠.이번에는 ROS1에서 카메라 Sensor 데이터를 발행해보고 Rviz를 통해 가시화 된 데이터를 확인해보겠습니다.환경Jetson Orin Ubuntu 20.04ROS1 noetic1. 카메라 테스트카메라는 다른 컴퓨터(192.168.0.21)에 장착되어 있습니다.카메라(CSI MIPI)가 정상적..

드론/ROS 2026.05.02

#2 MAVlink Router

이전 게시글에서는 MAVSDK를 사용하는 방법에 대해서 설명하였습니다.이번에는, MAVlink Router를 이용해서 Endpoint에서 MAVlink 데이터를 수신하는 방법에 대해서 설명하겠습니다.1. 왜 MAVlink Router를 사용하는가?FC를 Offboard 모드로 사용하기 위해선 Jetson, Raspberry pi등의 Companion Computer가 필요합니다.그러면, "PC에서 드론의 상태를 어떻게 볼 것이고, Companion Computer를 어떻게 접속할까?" 에 대해 생각해 볼 필요가 있습니다.PC(QGC)에서 드론(PX4)으로 접속하기 위해선 드론이 현재 상태(Mavlink Data)를 PC의 특정 포트로 보내주어야 합니다.PC에서 Companion Computer에 접속하여..

드론/PX4 2026.05.01

# 0 Docker를 활용한 ROS1 개발환경 구축

Docker를 이용해 PC의 구성 환경을 분리할 수 있습니다.Ubuntu 20.04에서 가상환경을 이용해 ROS1 개발환경을 구축하고 ROS2와 동시에 설치될 수 있도록 하겠습니다.1. Docker설치PC에서 ROS1과 2를 구동하기 위해서는 Docker를 사용해 환경을 분리해야 합니다.두개를 동시에 설치하면 의존성 문제로 충돌할 가능성이 있기 때문이죠.먼저 Docker를 설치하겠습니다.sudo apt-get updatesudo apt install ca-certificates curlsudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/d..

드론/ROS 2026.04.26

#4 인버터 구동 - 인버터 제작의 실질적 애로사항

이전 게시글에서 Ti의 MCU를 이용해 SPWM을 발생하기 까지의 과정에 대해서 설명했습니다.이번에는 인버터를 제작할 때 이론과 실제적용의 차이점에 대해서 설명하도록 하겠습니다.1. How To Control Gate-Source Surge Voltage가장 신경썻던 부분은 MOSFET의 게이트-소스 양단의 서지전압을 어떻게 컨트롤 할 것인가에 대해서입니다.Gate - Source surge voltage를 +26V에서 -4V 사이에서 제어하라고 추천하고 있습니다. 만약 이를 초과하는 전압을 인가했을 시에는 FET가 소손될수 있습니다. 그 외에도 나중에 설명하겠지만, Gate-Source Surge Voltage는 인버터 손실의 원인이 되므로 제거하는 것이 바람직합니다게이트 소스 서지전압은 대부분 인덕턴..

#1 MAVSDK 환경구성 및 Offboard 예제

이전 게시글에서 PX4 Autopilot의 개발환경을 구축하였습니다. 이번 게시글에서는 MAVSDK를 이용해 Simulation 환경에서 드론을 비행하는 방법에 대해서 알아보겠습니다.1. PX4 Autopilot Setup - MAVSDKMAVSDK는 MAVLINK 시스템을 사용하는 드론, 지상국 시스템과 상호작용 하기 위해서 사용하는 SDK입니다.mavsdk를 설치하겠습니다.pip3 install mavsdkPX4를 사용한 드론은 MAVLINK 프로토콜을 이용해 통신합니다.그래서 사용자가 "Arm"라는 MAVLINK 프로토콜을 드론에게 전송하면 드론은 시동을 걸게 됩니다.MAVLINK 프로토콜 기반으로 코드를 작성하면 원하는 대로 드론을 작동시킬 수 있습니다.하지만, 드론은 기체 상태에 따라 "비행 ..

드론/PX4 2026.04.25

#3 인버터 구동 - PWM 출력을 위한 TMS320F28335 레지스터 설정(2)

이전 게시글에서 Ti의 MCU 인 TMS320F28335의 ePWM Submodule에 대해서 설명했습니다.TB, CC, AQ에 이어서 DB와 인버터 제작을 위한 카운터 설정에 대해서 알아보겠습니다.1. ePWM Submodule - Deadband(DB)인버터에서 중요한 Deadband입니다.인버터는 Highside와 Lowside FET가 각각 상보적으로 작동합니다. High가 On이면, Low가 Off인 상태로 작동하죠.그런데, 만약 Highside가 Low에서 High로 변화하는 순간 Lowside가 High이면 어떻게 될까요??이렇게 FET가 소손되게 됩니다. 이를 방지하기 위해 Highside와 Lowside가 스위칭되기 전 시간적 여유가 필요합니다. 서로의 간격을 두고 On, Off를 해야 ..

#2 인버터 구동 - PWM 출력을 위한 TMS320F28335 레지스터 설정(1)

인버터를 구동하기 위해서는 0~5V의 PWM을 게이트드라이버에 인가해야 하고 이를 게이트 드라이버를 통해 0-18V로 승압하는 과정을 거쳐야 한다고 이전 게시글에서 설명해 드렸습니다.이번 글에서는 MCU를 이용해 어떤 방식으로 PWM을 발생하고, 인버터에 SPWM을 이용해 입력하는지에 대해서 설명하도록 하겠습니다.1. TMS320F28335 기능 설명 - ePWM(Enhanced Pulse Width Modulator Module )Ti사의 MCU인 TMS320F28335에는 ePWM을 통해 PWM 출력이 가능합니다.ePWM을 쉽게 설명하자면, 다양한 기능을 가진 PWM발생 장치라 생각하면 좋습니다.정말 다양한 기능을 가지고 있기 때문에 서브모듈별로 기능과 동작방식을 을 자세히 알아두어야 합니다.Subm..