• custom msg, action 등을 사용할 때

    각 Package 에서 사용하는 msg, srv, action 등의 데이터 형태 파일들은 반드시 대문자로 시작 해야 한다. 파일명에 대문자가 여러 개 들어갈 경우, 이후 소스파일에서 헤더 선언 할 때 대문자 앞에는 ‘_’ 언더바로 표현해주어야한다. ex) msg 폴더의 파일명 : DataSend.msg → 헤더 선언 : #include “…/msg/data_send.hpp”

  • rclcpp::init은 반드시 main() 함수의 맨 앞에 와야 한다. 안 그러면 아래 같은 오류 등장 (linux 터미널)

    terminate called after throwing an instance of ‘rclcpp::exceptions::RCLInvalidArgument’
    what(): failed to create guard condition: context argument is null, at ./src/rcl/guard_condition.c:65
    
  • Publisher는 함수화해서 소스에 퍼블리싱 시킬 수 있다. but, Subscriber는 계속해서 읽어야 하기 때문에 rclcpp::spin() 을 반드시 실행시켜 주어야 한다.

    → 무슨 소리냐? 기능들은 모두 소스(+헤더 파일)화 해서 마지막의 main.cpp 에는 spin()만 돌아가게 해야 한다는 의미

  • Terminal 마다 source /opt/src/ 하기 싫을 때

    echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc

    echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

    Untitled