.. Cover Letter

ㅇ 프로젝트 70

배송로봇 모니터링 프로그램 만들기 2장 설계의 구체화

대충 컨셉은 모두 설계가 되었습니다. Git 생성 brainKimDu/Making-a-serving-robot (github.com) GitHub - brainKimDu/Making-a-serving-robot Contribute to brainKimDu/Making-a-serving-robot development by creating an account on GitHub. github.com 일단 깃부터 만들고 시작하도록 합시다. 프로젝트 세부 설계 큰 그림으로 보자면 다음의 그림과 같습니다. 이제 설계를 해야할 것은 각각의 모듈을 어떻게 구현할 것이고, 각 모듈이 어떻게 통신을 해야하고, 어떻게 구현을 해낼건지 조사를 진행해야겠습니다. 들어가기 전 UML과 아키텍처 설계를 조금 진지하게 공부해보고자..

배송로봇 모니터링 프로그램 만들기 1장 프로젝트 설계

프로젝트 목적 - ROS 활용능력을 키우기위함 - 소프트웨어 아키텍처 설계 능력을 기르기 위함 - C++ 객체지향 능력을 향상시키기 위함 - 기존의 코드들을 재활용하면서 접근하여 하나의 완성작을 만들어보고자 함. 프로젝트 기간 2023년 6월 28일부터 7월 30일까지 업무 외 별도로 진행 프로젝트 인원 개인 프로젝트 프로젝트 설계 요구사항 1. 시뮬레이션 상에서의 서빙로봇을 만들고 싶습니다. (로봇은 한 대만 사용합니다.) 2. 손님은 키오스크에서 주문을 진행함. (키오스크에서 객체지향의 특징이 잘 드러나게 설계할 것) 3. 그리고 손님이 자리에 앉으면 주방에서 음식이 만들어지고, 로봇이 이를 손님에게 전달함. 4. 남은 배터리 용량, 로봇의 현재위치, 로봇의 현재 명령 수행과정 등등을 모니터링할 수 ..

4. (CARLA Autoware Bridge) 추가적으로 자율주행을 위해 필요한 센서값들 연결하기 (신호등 연결)

이 프로젝트는 CARLA-Autoware Bridge의 완성을 적는 것이 아니라, 이렇게 만들면 Bridge가 가능하다라는 것을 증명하는 프로젝트임을 알립니다.신호등 정보를 추가하기Carla에서 카메라 영상정보를 보내면 이 영상정보에서 신호등을 detection하고, 여기서 빨간불인지 초록불인지 판단을 하고, autoware에 반영을 해주게 하는 방법이 있을 것입니다.우선은 여기서 신호등을 detection하는 과정을 생략하고 carla에서 현재 어느 구역의 신호등이 빨간불이다 라는 정보를 보내고 autoware는 이들 받아서 적용하는 과정을 제작해보고자 합니다. Topic 분석하기Carla에서 보내는 값ros2 topic list를 통해서 어떤 토픽을 구독해야 현재 world의 신호등 정보를 받을 수 ..

3. (CARLA Autoware Bridge) Carla에서 차를 움직였을때 Autoware에 표시 되도록 연결하기

이 프로젝트는 CARLA-Autoware Bridge의 완성을 적는 것이 아니라, 이렇게 만들면 Bridge가 가능하다라는 것을 증명하는 프로젝트임을 알립니다. 해당 코드의 converting 과정carla_autoware_bridge/getting-started.md at master · Robotics010/carla_autoware_bridge · GitHubCARLA에서 전송하는 토픽 Carla의 자동차(ego_vehicle)의 Odometry 정보를 구독하여 /carla/ego_vehicle/velocity_status 토픽으로 발행한다. 다음의 topic은 자동차의 속도에 관한 정보를 담고 있습니다. Carla의 자동차(ego_vehicle)의 status 정보를 구독하여 /carla/ego_..

2. (CARLA Autoware Bridge) Autoware ROS상에서 Topic 구독, Carla ROS상에서 Topic 구독

GitHub의 코드 분석GitHub - Robotics010/carla_autoware_bridge: Addition to carla_ros_bridge to convert carla messages to autoware messagesCarla 자동차의 Odometry 정보 ROS의 nav_msgs의 Odometry 메시지 타입 Callback → VelocityReportConverter → 를 통해서 Odometry를 변환하고 velocity_report_msg 형식 (VelocityReport)으 Publishing publishing 하는 Topic의 이름은 '/carla/ego_vehicle/velocity_status' Callback의 과정에서 Header를 붙인다. 자동차의 status ..

1. (CARLA Autoware Bridge) Bridge 제작에 필요한 ROS 세팅

이 프로젝트는 CARLA-Autoware Bridge의 완성을 적는 것이 아니라, 이렇게 만들면 Bridge가 가능하다라는 것을 증명하는 프로젝트임을 알립니다. Ubuntu 22.04의 경우 어려움이 조금 있어서 20.04를 추천합니다. 제 컴퓨터 사양은 다음과 같으며, 전체적인 소프트웨어 요약은 다음과 같습니다. System Requirement Hardware RTX 3080 CPU I7 9700KF RAM 32GB Software Ubuntu 20.04 Nvidia-Driver 530 CUDA 11.6 cuDNN 8.7.0 ROS2 Foxy Autoware Universe Docker Humble Carla 0.9.13 이를 어떻게 설치하는지는 생략합니다. 따로 찾아서 설치하실 수 있을 것이라 생각..

터틀봇3 시뮬레이션 듀토리얼 진행하기

https://emanual.robotis.com/docs/en/platform/turtlebot3/overview/ ROBOTIS e-Manual emanual.robotis.com humble 버전을 Github 에서 다운로드 받도록 하겠습니다. 아마 로보티즈에서 만든 패키지가 있을 것입니다. https://github.com/ROBOTIS-GIT/turtlebot3 GitHub - ROBOTIS-GIT/turtlebot3: ROS packages for Turtlebot3 ROS packages for Turtlebot3. Contribute to ROBOTIS-GIT/turtlebot3 development by creating an account on GitHub. github.com humbl..

ROS 패키지 상에서 작동하는지 확인해보자. (패키지 설계) 실제로봇 주행..

이 글은 잠을 참고 정리하는 글이므로, 정리가 대충되어있습니다. ROS package 설계 ㅇ 요약 현재 진행상황 요약 : 가제보상에서 토픽으로 이동요청시 이동함. 2개의 패키지를 제작했습니다. minibot_indoor 패키지 (실내 경로생성 알고리즘이 들어있는 패키지 입니다.) minibot_msg 패키지 (메시지의 모음입니다) 1. 각 패키지에 대한 설명 minibot_indoor 는 실내 경로생성 알고리즘이 들어 있는 패키지 입니다. 해당 패키지에 대한 설명을 하면서, 메시지 타입은 msg에 작성되어 있습니다. 해당 패키지에는 현재 두 알고리즘이 들어가있습니다. 라이다에서 전방 물체를 판단하는 방법 (tistory.com) 라이다에서 전방 물체를 판단하는 방법 실제로봇의 경우 YDLidar를 사용..

라이다에서 전방 물체를 판단하는 방법

실제로봇의 경우 YDLidar를 사용하는데 이번 프로젝트에서 Lidar의 값을 구독하여 전처리하고, 다시 발행하는 과정에서 문제가 생겼다. 오류의 내용은 QoS (데이터 통신) 문제로 발행하는 부분과 구독하는 부분이 서로 합이 맞지 않는다는 이야기였다. 우리가 짠 코드는 라이다의 전방영역의 가장 작은 값이 0.35 이내라면 장애물이 판별되었다는 Topic을 발행하라는 코드이다. import rclpy as rp from rclpy.node import Node from sensor_msgs.msg import LaserScan from minibot_msgs.msg import IsObstacle class ObstacleDetect(Node): # /scan topic을 구독하고 장애물이 가까이 있는지..

실내 경로생성 알고리즘의 아이디어 및 코드 설명

팀원에게 설명해주기 위해 작성한 글을 블로그에 그대로 올리는 글입니다. 초기 설정 및 파리미터 설명 노트북이 없어서 rviz는 스크린샷을 찍을 수 없는 상태입니다. 들어가기 전 minibot 패키지를 설치하는 곳은 노트북과 로봇입니다. 그래서 만약에 노트북으로 gazebo 시뮬레이션만 돌릴 예정이라면 Nav2 패키지를 노트북에서 실행하는 것이므로 노트북의 minibot 패키지에서 파라미터를 수정해야합니다. 실제 로봇의 경우는 Nav2 패키지는 실제 로봇에서 실행하는 것이므로 Na2 패키지를 로봇에서 파라미터를 수정해야합니다. 충돌 파라미터 설명 충돌 파라미터는 Nav2 패키지에 있는 파라미터로 2가지로 나누어집니다.1 global collision 과 local collision 입니다. 이 파라미터 수..

실내 경로 생성 파이썬으로 해보자 (Nav2를 이용한)

우선 가제보 실행 코드 ros2 launch minibot_gazebo bringup_gazebo.launch.py world_name:=simple_building.world 네비게이션 실행코드 ros2 launch minibot_navigation2 map_building.launch.py use_sim_time:=true 시뮬레이션 ros2 launch minibot_navigation2 rviz_launch.py 로봇을 돌리기 ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r cmd_vel:=base_controller/cmd_vel_unstamped 맵을 잘 만들었으니까 ros2 run nav2_map_server map_sa..

도로의 차선을 검출해보자. (image segmentation 활용)

팀원의 결과물을 올리는 글로써 기술적인 설명은 없습니다. Visual SLAM 팀에서는 차선을 인식해서 달리게 하는 것을 목표로 하고 있습니다. OpenCV도 사용할 수 있겠지만 경험에 초점을 맞춘 프로젝트이니 만큼 Image Segmentation을 활용하고 싶다는 의견이 있었습니다. 그래서 Image Segmentation을 활용하는 방안으로 진행을 하게 되었습니다. 처음에는 Roboflow라는 놈을 사용해서 라벨링을 하려고 했는데 라벨링까지는 쉬운데, 모델을 뱉어주는 방식이 API를 통한 방식이기 때문에 바로 버렸습니다. 그래서 YOLOv8을 사용하게 되었고 YOLOv8부터는 segmentation까지 지원을 하게 되었습니다. https://youtu.be/DMRlOWfRBKU 해당 영상을 참고하면..

Visual SLAM 구역, SLAM구 ROS 패키지 설계 및 FSM 설계

FSM은 정의와 다를 수 있습니다. 회의록 Visual SLAM 부분 ROS 패키지 설계 하나의 센서가 정보를 topic 발행 (input) → 그 정보를 구독을 해서 가공 (output) 비쥬얼슬램이 안된다는 가정하에 만들어지고 있습니다. -된다면 가능한 것은 SLAM 맵이 생성됩니다. 그 전까지는 미리 만들어진 MAP을 참고하여 진행합니다. (global map) 토픽으로 해야합니다. 움직임이 스무스하지않다. (스무스한 움직임을 위해 토픽을 해야함) 목적지 설정 → 경로 생성 → image정보 토대로 경로 수정 → 경로따라 가기 이 사이에 object detection으로 장애물 검출시 회피. ROS 설계를 위한 input output 정의 센서 Input RGB-d (영상정보) (유선연결이라 ROS..

7. 비상회의를 소집하다.

모든 문제를 정리하자면 기획을 1주간 진행했고 (중간에 강의실이 바뀌는 이슈가 있었다.) 유비쿼티와 터틀봇에 가져다 버린 시간이 1주가 되어버렸다. 그래서 결국 남은 시간은 14일정도 그 중에서도 3일은 수업이 예정되어 있는 상태이다. 그렇게 비상회의를 소집하고 나서 팀원들과 제작을 위해서 어떻게 할 것인지 다시 정리하고 빨리 구현가능한 것부터 진행하고자 하였다. 솔직히 터틀봇을 만지는 팀원들과 나도 그렇고, 완벽한 ROS 패키지를 만들기 위해 노력하는 팀원도 있었고 RtabMap을 통해 Visual SLAM을 구현하고자 하는 팀원도 그렇고, 관제를 구현하는 팀원도 그렇고 이 모든 것이 완성되려면 2주도 안되는 시간은 너무나도 부족한 시간이 되어버렸다. 그래서 서로간의 진행상황을 확인하고, 버릴 것은 버..

6. 터틀봇 4도 포기하게 되었다. / 핑크봇을 위한 맵을 만들었다.

도큐먼트를 아무리 따라해도 SLAM이 안되는 문제가 있었다. 당장 문제는 robot_description 토픽을 발행하지 않아서 아무리 해도 Rviz에서 터틀봇을 띄울 수가 없었다. 이전에 사용한 사람 때문과의 설정차이때문에 문제가 생긴거 아닐까? 그러니까 bashrc에 들어가야할 어떤 소스코드 하나를 삭제했다거나 하는 문제가 아닐까 하는 생각이였다. 그래서 도큐먼트 상에서 터틀봇4용 라즈베리파이의 이미지 파일을 구할 수 있었고 분해방법은 다음과 같았다. 우선 육각렌치로 위의 4개의 나사를 풀어준다. 그리고나서 원판을 들어내고 기둥을 풀면 다음처럼 위에 기판이 들리게 된다. 라즈베리파이가 보이며 손을 잘이용하여 SD카드를 분리한다. SD카드를 분리하고 도큐먼트에서 시키는대로 터틀봇4를 초기화했다. 초기화..