[데브코스 자율주행 TIL] DAY10 (10/03)

happy_quokka·2023년 10월 3일
0

2023.10.03 데브코스 10일차😄

오늘은 온라인 강의만 있는 날이었다!

어제에 이어 ROS 통신에서 발생할 수 있는 문제점들에 대해 배웠다. 아직 어렵지만 실습으로 코딩을 하다보니 조금씩 이해가 되고 익숙해지는 것 같다. 지금은 python을 사용하고 있지만 C++을 공부하여 C++로 작성할 수 있도록 해야겠다!!

그래서 오늘부터 C++ 교재(이것이 C++이다)를 통해 처음부터 C++을 제대로 공부하기 시작했다. 지금까지는 모르는 부분들만 찾아서 공부했는데 그랬더니 뭔가 정리가 안되고 빠지는 부분들이 많다고 느껴졌다. 기본부터 제대로 다진다고 생각하고 한동안 C++ 공부를 열심히 해야겠다!!👩‍💻


📨 ROS 노드 통신 프로그래밍 실습

ROS... 이제 조금씩 감을 잡아가는 것 같다.

timesplot 문제

  • 주기적으로 topic을 발송할 때 timesplot을 넘기면 어떻게 되는가?
  • time 함수를 사용하여 topic 발송 전, 발송 후, sleep 후를 측정하여 시간이 얼마나걸리는지, 주어진 일을 다 수행하는지 확인
  • 결과 : delay가 발생하고 일은 다 수행한다!!

ros node 순차 실행(roslaunch 사용시)

  • roslaunch의 경우 node를 순차적으로 실행시키지 않는다
  • receiver가 sender들에게 순차적으로 보내라는 topic을 보낸다
  • sender는 receiver가 보내는 topic을 받으면 발송을 시작한다
  • roscore로 할 수 있는 방법이 있지 않을까 생각했지만 receiver를 사용하여 topic을 보내는 것이었다.

받은 topic 가공 후 재전송

  • ros의 기본 기능
  • 하나의 노드가 publisher이자 subscriber이다

📖 개인 C++ 공부(chapter 1)

  • main(int, char**)

    • int : main 함수에 전달되는 데이터의 개수(기본이 1개)
    • char** : 전달되는 실질적인 데이터([0]는 경로)
  • auto : 초깃값의 형식에 맞춰 선언하는 인스턴스의 형식이 자동으로 결정

  • new, delete

    
    int *pData = new int(10);
    delete pData;
    
    int *arr = new int[5];
    delete[] arr;
    • new 연산자는 객체의 생성자 호출, delete 연산자는 객체의 소멸자 호출
  • 참조자

    int nData = 5;
    int &ref = nData;
    
    ref = 10; //참조자의 값을 변경하면 원본도 변경됨
    std::cout << ref << endl; //10
    • 함수의 매개변수가 참조자인 경우, 호출자 코드만 봐서는 매개변수가 참조 형식이라는 것을 알 수 없다.
  • r-value 참조

    • 가장 어려운 부분이다...
    • int &&a = 3
    • 이제 곧 사라질 대상(임시 결과)에 대해 참조자를 부여할 수 있다
  • 범위 기반 for 문

    int aList = {10, 20, 30}
    for(auto n : aList) //n에 값을 복사한다
      cout << n <<' '; //10 20 30 
      
    for(auto &n : aList){ //n은 각 요소에 대한 참조
    	n = 50;
        cout << n <<' '; //50 50 50
    }

0개의 댓글