임베디드/ROS

    자율주행 로봇 프로젝트

    2022년 4학년 1학기 졸업 작품으로 자율주행 로봇 프로젝트를 진행하였다. 관련 코드는 아래에 정리해두었다. GitHub - warning42/amvm_project Contribute to warning42/amvm_project development by creating an account on GitHub. github.com 프로젝트 수행 과정은 추후 게시할 예정

    SLAM & Navigation

    SLAM(Simultaneous Localization And Mapping) 동시적 위치 추정 및 지도 작성 Navigation 차량 자동 항법 장치 길 찾기에 필요한 요소 위치: 로봇의 위치 계측 / 추정하는 기능 센싱: 벽, 물체 등의 장애물의 계측하는 기능 지도: 길과 장애물 정보가 담긴 지도 경로: 목적지까지 최적 경로를 계산하고 주행하는 기능 이 4가지가 ROS에서 사용하는 패키지나 메시지가 될 수 있음 위치 GPS(Global Positioning System) 실외에서 사용하기에 적합 상대적으로 위치의 오차가 커서 이를 고려해야 한다. 날씨의 영향을 많이 받는다. 고층 빌딩이 많은 곳에서 오차가 많이 발생한다. IPS(Indoor Positioning Sensor) GPS의 단점을 보완하기..

    ROS 모바일로봇

    대표적인 ROS의 모바일로봇으로 터틀봇이 있다. 여기서는 터틀봇을 위주로 모바일로봇에 대해 설명한다. 터틀봇(Turtle Bot) 터틀(turtle)은 1967년에 개발된 교육용 컴퓨터 프로그래밍 언어인 로고(Logo)를 이용해 실제 로봇을 구동하기 위해 만들어진 터틀 로봇에서 유래되었음. ROS의 공식 로봇 플랫폼이다. SLAM, Navigation, Gazebo, RViz 등을 서포트함 TurtleBot3의 하드웨어는 오픈소스로 깃허브에 제공되어서 3D 프린터로 출력이 가능하다. TurtleBot3 네트워크 PC와 TurtleBot을 연동하는 경우 gedit ~/.bashrc 위 명령어로 bashrc 파일을 열어서 아래와 같이 변경한다. IP 주소는 터미널에서 ifconfig를 입력하면 알 수 있다...

    ROS 임베디드 시스템

    컴퓨터 자원의 종류와 ROS 지원 ROS 설치 가능 ARM A-class - Samsung Exynos... / ODROID... x86 - Intel Core i-series... / Intel NUC... ROS 설치 불가능 32-bit MCU - ARM Cortex-M0, ARM Cortex-M7 ... 8/16-bit MCU - Atmel AVR, Arduino Leonardo ... PC와는 달리 임베디드 시스템에서는 ROS 설치 불가능 대신 ROS가 설치 가능한 하드웨어와 USB로 연결이 가능(ROS는 rosserial이라는 패키지를 제공 / PC 등에서 구동) 임베디드 시스템은 모터 제어, 센서 조정 값 등을 ROS가 설치된 PC로 전달 rosserial PC와 제어기 간의 메시지 통신을 위..

    ROS 프로그래밍 실습(이동, 회전)

    만약 ROS 시뮬레이션 관련 패키지들을 다운받지 못했다면 다음 사이트로 넘어가서 클론하도록 하자. https://emanual.robotis.com/docs/en/platform/turtlebot3/autonomous_driving/#getting-started ROBOTIS e-Manual emanual.robotis.com Wanderbot red_light_green_light.py 3초간 멈춰 있다가 3초 전진을 반복 1. 패키지 생성 cd ~/catkin_ws/src catkin_create_pkg wanderbot rospy geometry_msgs sensor_msgs mkdir scripts 2. python 파일 생성, 권한부여 및 코드 작성 chmod +x red_light_green_..

    ROS 프로그래밍

    ROS 프로그래밍 전에 알아둬야 할 사항 표준 단위: SI 단위 사용 좌표 표현 방식: x(forwoard), y(left), z(up) - 오른손 법칙 프로그래밍 규칙: 패키지, 토픽, 파일, 네임스페이스 명명 규칙을 따라야 한다. (구글링으로 확인) ROS 메시지 통신 이전에 설명했기 때문에 넘어가겠다. 파라미터 서버는 매개변수의 마스터 역할을 한다. 유저가 정해놓은 파라미터를 저장하고 있고, 임의의 명령을 통해 파라미터 값을 바꿀 수 있다. 해당 파라미터에 관련된 노드가 그 값을 참조하게 된다. Topic / Publisher / Subscriber 1) 패키지 생성 ROS에서는 단방향 통신일 때 'Topic'이라는 메시지 통신을 사용한다. 이때 송신 측을 'Publisher', 수신 측을 'Sub..

    ROS 도구

    RVIZ(ROS Visualization Tool) ROS의 3D 시각화툴 - 레이저, 카메라 등 여러 센서 데이터의 시각화 툴 로봇 외형의 표시와 계획된 동작을 표현 Navigation Manipulation 원격 제어 매우 다양한 형태의 데이터를 RVIZ tool에서 시각화가 가능하다. RQT 플러그인 방식의 ROS의 종합 GUI 툴 rqt는 Qt로 개발되어 있기 때문에 유저들이 자유롭게 플러그인을 개발하여 추가할 수 있다. 대표적인 플러그인으로 rqt_image_view, rqt_graph, rqt_plot, rqt_bag 등이 있다. 위 사진은 rqt_graph 플러그인을 실행했을 때이다. 노드 간 통신이 어떤 식으로 이루어지는지를 쉽게 알 수 있다. Gazebo 로봇 개발에 필요한 3차원 시뮬레..

    ROS 명령어

    Commend-Line Tools ROS 셸 명령어 별표는 명령어의 중요도를 나타냄 roscd(★★★) : ros+cd(changes directory) - 지정한 ROS 패키지의 디렉터리로 이동 rosls(★☆☆): ros+ls(list files) - ROS 패키지의 파일 목록 확인 rosed(★☆☆): ros+ed(editor) - ROS 패키지의 파일 편집 roscp(★☆☆): ros+cp(copies files) - ROS 패키지의 파일 복사 rospd(☆☆☆): ros+pushd) - ROS 디렉터리 인덱스에 디렉터리 추가 rosd(☆☆☆): ros+directory) - ROS 디렉터리 인덱스 확인 ROS 실행 명령어 roscore(★★★): ros+core - master(ROS 네임 서비..