Study 73

ROS2 with python - Executors and Callback Groups

본 포스트는 ROS1에 대한 전반적인 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations 1. 좀 더 복잡한 노드 다뤄보기 1. 다음과 같이 패키지를 만듭니다. ros2 pkg create --build-type ament_python unit5_pkg --dependencies rclpy std_msgs sensor_msgs geometry_msgs nav_msgs 2. 위 패키지에 exercise51.py 파일을 만듭니다 exercise51.py import rclpy from ..

ROS2 with python - Understanding ROS2 Services

본 포스트는 ROS1에 대한 전반적인 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations 이전 포스트에서도 보셨다시피, ROS2 Topic이나 ROS1 Topic이나 별 차이가 없었습니다. Service 또한 마찬가지입니다. 따라서 내용 설명은 생략하고, 바로 예제로 들어가겠습니다. 1. Service Client 만들기 1. client_pkg 라는 이름으로 간단한 서비스 클라이언트 노드를 만들 패키지를 생성합니다. $ cd ~/ros2_ws/src $ ros2 pkg create..

ROS2 with python - Understanding ROS2 Topics

본 포스트는 ROS1에 대한 전반적인 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations 1. ROS2 Topic 확인해보기 다음 명령으로 turtlebot 시뮬레이션 실행 후, topic들을 확인해봅니다. $ ros2 launch turtlebot3_bringup gazebo.launch.py $ ros2 topic list ros2 topic info 명령으로 해당 topic의 정보를 확인해봅니다 $ ros2 topic info /cmd_vel ROS1을 하셨으니 무슨 의미인지 ..

ROS2 with python - Basic Concept

본 포스트는 ROS1에 대한 전반적인 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 1 패키지란? ROS2도 프로그램을 다루기 위해 ROS1처럼 패키지를 사용합니다. 패키지는 특정한 ROS2 프로그램을 포함하는 모든 파일들(cpp, python, configuration, compliation, launch, parameters 파일들)이라고 생각하면 되겠습니다. ROS2에서는 2가지 종류의 패키지를 만들 수 있는데... 하나는 파이썬 패키지, 다른 하나는 CMake(C++) 패키지 입니다. 모든 파이썬 패키지는 다음과 같은 파일 및 디렉터리 구조를 갖습니다. - package.xml - 패키지에 대한 meta-information(패키지 관리자, ..

Bayes Filter 공식 유도 정리

참고자료 : - 베이즈 필터 공식 유도 : https://www.youtube.com/watch?v=0lKHFJpaZvE - Probablistic Robotics : https://docs.ufpr.br/~danielsantos/ProbabilisticRobotics.pdf 필요한 사전 지식 1. 베이즈 정리 : https://angeloyeo.github.io/2020/01/09/Bayes_rule.html 위 링크의 내용에 의하면, 베이즈 정리의 의미는 "새로운 정보를 토대로 어떤 사건이 발생했다는 주장에 대한 신뢰도를 갱신해 나가는 방법(a method to update belief on the basis of new information)이다." 따라서 로보틱스의 관점에서 위 의미를 해석하자면,..

Path Planning Basics: Dijkstra Algorithm

이 포스트는 theconstructsim.com의 Path Planning Basics: Dijkstra Algorithm 를 참고하였습니다. https://www.youtube.com/watch?v=ZmQIkBws4LA 1. The problem to solve 이번 챕터에서는 먼저 로봇이 점유 격자 지도(occupancy grid map)을 이미 가지고 있고, 오차 없이 자신의 위치를 정확하게 알 수 있다고 가정하겠습니다. 추가적으로, 로봇의 시작 위치와 목표 위치 또한 주어져 있다고 생각할 것입니다. 위의 지도에서 하얀 cell은 free space, 어두운 부분은 장애물을 의미합니다. 위 그림과 같이 주어진 공간에서 로봇은 인접한 free grid cells로만 이동 가능하며, 지도 경계 밖으로 ..

Study/Algorithm 2022.05.24

자율주행형 수납식 관람석 개발

2021년 2학기, 대학원 캡스톤 디자인 과목에서 지역 산업체 '엔시팅' 회사의 애로기술 해결을 위해 자율주행형 수납식 관람석을 개발하였습니다. http://nseating.net/shop/video.php 위 링크의 영상과 같은 수납식 관람석을 자율주행화 하는 과제였습니다. 1. 업체의 요구사항 - 하드웨어 스펙 폭 : 0.9m 너비 : 5~6m 높이 : 10m 무게 : 4t - 요구사항 위치 오차 5cm 미만의 정밀도 500만원 미만으로 자율주행 구현 우리 팀은 기계공학 전공이 아니기 때문에 저 무거운 관람석을 움직이기 위한 기계적 구조의 설계(모터 선정 등)는 시간이 너무 오래 걸릴것으로 판단해서, 단지 "자율주행 시스템"을 구현하는것으로 협의하였습니다. 업체에서는 메카넘 휠을 사용할 것으로 요청하..

Study/Robotics 2022.05.14

Deep Sensor Fusion for Real-Time Odometry Estimation

이 글은 Michelle Valente, Cyril Joly, Arnaud de La Fortelle의 Deep Sensor Fusion for Real-Time Odometry Estimation 의 일부를 번역한 글입니다. 원본은 https://arxiv.org/pdf/1908.00524.pdf 입니다. Abstract- 카메라와 2D 레이저 스캐너는 낮은 비용, 가벼운 가중치와 정확한 솔루션으로 많은 로봇 내비게이션 작업에 잘 맞는 조합입니다. 하지만, 정확한 데이터 퓨전은 센서들 사이의 rigid body transform의 정확한 캘리브레이션(calibration)에 의존합니다. 이 논문에서는 모노 카메라(mono camera)와 2D 레이저 스캐너의 데이터를 퓨전하여 오도메트리를 추정하기 위해..

Study/Robotics 2021.10.23

[Deep Learning with Python] 5-2, 5-3 케라스 콜백과 텐서보드를 사용한 딥러닝 모델 검사와 모니터링, 모델 성능 최대로 끌어올리기

이번 포스트는 케라스 창시자에게 배우는 딥러닝(Deep Learning with Python)의 ch.7을 참고하였습니다. 이번 포스트를 읽기 전에, [Do it!] 시리즈를 먼저 읽는것을 권장합니다. 이 포스트에서는 [Do it!] 시리즈에 중복해서 나온 내용들을 많이 생략하였습니다. 이 책은 딥 러닝의 입문서로서는 적절하지 않다고 생각됩니다. 딥 러닝에 대한 어느정도 지식이 있고, 케라스의 사용방법에 대해 좀 더 자세히 알고 싶은 분께 권장합니다. 케라스 콜백과 텐서보드를 사용한 딥러닝 모델 검사와 모니터링 콜백을 사용하여 모델의 훈련 과정 제어하기 모델을 훈련할 때는 예상할 수 없는 것들이 많이 있습니다. 예를 들면, 최적의 모델을 위해 에포크가 얼마나 필요한지는 훈련하기 전에는 알 수 없으므로, ..

[Deep Learning with Python] 5-1. 케라스의 함수형 API

이번 포스트는 케라스 창시자에게 배우는 딥러닝(Deep Learning with Python)의 ch.7을 참고하였습니다. 이번 포스트를 읽기 전에, [Do it!] 시리즈를 먼저 읽는것을 권장합니다. 이 포스트에서는 [Do it!] 시리즈에 중복해서 나온 내용들을 많이 생략하였습니다. 이 책은 딥 러닝의 입문서로서는 적절하지 않다고 생각됩니다. 딥 러닝에 대한 어느정도 지식이 있고, 케라스의 사용방법에 대해 좀 더 자세히 알고 싶은 분께 권장합니다. 지금까지 사용했던 모든 신경망은 Sequential 모델을 사용해서 만들었습니다. Sequential 모델은 네트워크 입력과 출력이 하나라고 가정하며, 층을 차례대로 쌓아서 만들었습니다. 이런 모델이 잘 작동하는 경우도 많지만, 그렇지 않은 경우도 많습니다..