ROS 2 토픽과 Arduino Uno 시리얼 통신을 이용한 3색 SMD LED 제어

1. 전체 시스템 구조 이번 실습에서 중요한 점은 Arduino Uno를 ROS 2 노드처럼 직접 사용하지 않는다는 것입니다. Arduino Uno는 단순히 시리얼 명령을 받아 LED를 제어하는 하드웨어 제어기 역할만 합니다. ROS 2는 Raspberry Pi 4에서 실행합니다. Raspberry Pi 4의 ROS 2 노드는 /rgb_led/cmd 토픽을 구독하고, 토픽으로 들어온 RGB 값을 Arduino Uno로 시리얼 전송합니다. Arduino Uno는 받은 … Read more

Raspberry Pi 4와 Arduino Uno시리얼 통신 #2

11. C++ 시리얼 통신 예제 Ubuntu 22.04 Server에서 C++로 시리얼 통신을 하려면 Linux의 termios를 사용하면 됩니다. C++ 파일을 만듭니다. 아래 코드를 저장합니다. 12. C++ 코드 설명 1) 헤더 파일 설명 C++에서는 필요한 기능을 사용하기 위해 헤더 파일을 포함해야 합니다. <iostream> 터미널 출력에 사용합니다. 예를 들어 다음 코드가 <iostream>을 사용합니다. std::cout은 일반 출력입니다.std::cerr는 에러 출력입니다. <string> … Read more

Raspberry Pi 4와 Arduino Uno시리얼 통신

1. 전체 구조 USB 케이블을 사용하면 다음 두 가지가 동시에 처리됩니다. 별도의 센서, 브레드보드, 점퍼선은 필요 없습니다. 2. 통신 흐름 즉, 핵심은 다음과 같습니다. 3. 준비물 Arduino Uno는 일반적으로 USB 연결 시 다음 장치명으로 잡힙니다. 일부 보드는 다음처럼 잡힐 수도 있습니다. 4. Arduino Uno 연결 확인 Raspberry Pi에 Arduino Uno를 USB로 연결한 뒤 다음 명령을 … Read more

시리얼 통신에 대해서

1. ROS 2를 배우기 전에 알아두면 좋은 시리얼 통신 기초 ROS 2로 로봇이나 드론을 개발하다 보면 컴퓨터만으로 모든 장치를 직접 제어하기는 어렵습니다. 센서 값을 읽어야 하고, 모터 제어 보드에 명령을 보내야 하며, 배터리 상태나 GPS 정보도 받아와야 합니다. 이때 자주 사용하는 통신 방식이 바로 시리얼 통신입니다. 시리얼 통신은 오래전부터 사용되어 온 기본적인 통신 방식이지만, 지금도 … Read more

ROS 2 토픽으로 음성 안내와 효과음 출력하기

1. 전체 시스템 구조 이번 예제에서는 2개의 ROS 2 패키지를 먼저 사용합니다. 각 패키지의 역할은 다음과 같습니다. 패키지 역할 robot_audio_interfaces 음성/효과음 명령 메시지 정의 robot_audio_output 터틀봇3 버거에서 실제 음성 및 효과음 출력 토픽의 흐름은 다음과 같습니다. 2. 음성/효과음 명령 메시지 만들기 먼저 음성 출력에 사용할 메시지 타입을 정의합니다. 패키지 이름은 robot_audio_interfaces입니다. 다음 파일을 생성합니다. 내용은 … Read more

Navigation 파라미터

1. TurtleBot3 소스 설치 ROBOTIS의 Git 사이트에 접속하여 ROS2 humble용 TurtleBot3 소스를 다운로드 합니다. 의존성이 필요한 경우 설치합니다. 빌드를 수행합니다. workspace를 활성화 합니다. 아래의 명령으로 어떤 패키지가 사용되는지를 확인합니다. 반대로 이렇게 나오면 apt 설치본이 사용 중입니다. 2. TurtleBot3 Navigation 파라미터를 이해해야 하는 이유 TurtleBot3에서 Navigation을 실행하면 로봇은 단순히 목적지를 향해 움직이는 것이 아닙니다. 로봇은 먼저 … Read more

TurtleBot3 Ubuntu 22.04 Server에서 USB 스피커를 기본 출력 장치로 설정하는 방법

1. 작업 환경 이번 글에서는 TurtleBot3 또는 Ubuntu 22.04 Server 환경에서 USB 스피커를 연결하고, 재부팅 후에도 자동으로 기본 출력 장치로 설정되도록 구성하는 방법을 정리합니다. 사용 목적은 다음과 같습니다. 테스트 환경은 다음과 같습니다. 이번에 사용한 USB 스피커는 PulseAudio에서 다음 sink 이름으로 인식되었습니다. 이 이름은 각자의 USB 스피커마다 다를 수 있습니다. 2. 필요한 패키지 설치 먼저 오디오 … Read more

Cartographer SLAM

1. Cartographer란 무엇인가? Cartographer는 Google에서 공개한 실시간 SLAM 라이브러리입니다. Google은 2016년에 Cartographer를 오픈소스로 공개하면서, 이를 ROS를 지원하는 2D/3D 실시간 SLAM 라이브러리라고 소개했습니다. Cartographer 공식 문서에서 Cartographer는 여러 플랫폼과 센서 구성에서 2D 및 3D 실시간 SLAM을 제공하는 시스템이라고 설명합니다. 이름 그대로 Cartographer는 원래 “지도 제작자”라는 뜻입니다. ROS에서는 로봇이 움직이면서 주변을 측정하고, 그 결과를 지도 형태로 만드는 … Read more

SLAM Toolbox

TurtleBot3 시뮬레이션으로 배우는 SLAM Toolbox 이번 강의에서는 ROS 2 Humble 환경에서SLAM Toolbox를 사용해 모바일 로봇의 2D 지도를 작성하고 저장하는 방법을 실습합니다. 1. SLAM의 등장 배경 모바일 로봇이 실내에서 자율주행을 하려면 두 가지 정보가 필요합니다. 첫째,내가 어디에 있는가? 둘째,주변 환경이 어떻게 생겼는가? 사람은 방 안을 걸어 다니면서 벽, 문, 책상 위치를 자연스럽게 기억합니다. 하지만 로봇은 센서 … Read more

우분투에서 USB 장치 심볼릭 링크 만들기

ROS 2에서 센서 보드, 라이다, 모터 컨트롤러, 아두이노, STM32 보드 장치 등을 사용할 때 자주 만나는 문제가 있습니다. 장치를 연결할 때마다 포트 이름이 바뀌는 문제입니다. 예를 들어 어떤 날은 라이다가 다음처럼 잡힙니다. 그런데 다음에 다시 연결하면 이렇게 바뀔 수 있습니다. 또는 여러 USB 장치를 동시에 연결하면 순서에 따라 포트 번호가 달라집니다. ROS 2 노드에서 /dev/ttyUSB0을 … Read more