본문 바로가기

로보틱스5

ROS2 cpp 커스텀 메세지 및 서비스 작성 (custom msgs & srv) ㅇ배경 ros2에 편리한 내장 메세지나 서비스가 많지만 개발을 하다보면 커스텀 메세지나 서비스를 작성해야 한다. rosidl generator 덕분에 빌드 한 번하면 build 파일 내에 파이썬 ,C++ 버전의 메세지 클래스, 헤더파일이 생성된다. 예제 cd ~/dev_ws ros2 pkg create --build-type ament_cmake my_msgs my_msgs라는 패키지를 만들고 하위 폴더로 msg와 srv를 만든다. . ├── CMakeLists.txt ├── include │ └── my_msgs ├── msg ├── package.xml ├── src └── srv msg 폴더 안에 아래와 같은 내용의 파일을 작성한다. 확장자는 .msg int64 num srv 폴더 안에는 아래와 같.. 2024. 4. 7.
ROS2 cpp 파라미터 선언 및 코드 내 활용(2) - yaml 파일 활용하기 지난 예제코드(https://robocoder.tistory.com/7)에 이어서 설명한다. 타이머 두개로 하나는 파라미터를 읽고, 하나는 출력하는 예제이다. #include "rclcpp/rclcpp.hpp" class myParamNode : public rclcpp::Node { public: myParamNode() : Node("param_node") { RCLCPP_INFO(this->get_logger(), "param_node의 기본생성자"); timer1_ = this->create_wall_timer(std::chrono::milliseconds(200), std::bind(&myParamNode::timerCallBack,this)); timer2_ = this->create_wall.. 2024. 3. 5.
ROS2 cpp 파라미터 선언 및 코드 내 활용(1) parameter란? node의 시작 시, 또는 작동 시의 값을 구성(configure)할 때 쓰인다. 코드를 바꾸지 않으면서. 파라미터의 lifetime은 노드의 lifetime에 종속된다. (당연히 파일, 코드등에 저장하고 쓰는방법은 있지만) 각 파라미터는 key값과 value로 이뤄져있다. key값은 string 이고 value는 다음 아래 중 하나이다. bool, int64, float64, string, byte[], bool[], int64[], float64[] or string[] 전역적인 상수로써의 역할을 하고 코드로써, 커맨드로써 값을 실시간으로 바꿀수 있다. 공홈 설명(https://docs.ros.org/en/foxy/Concepts/About-ROS-2-Parameters.html.. 2024. 2. 24.
ROS2 cpp 패키지 만들기 환경 : 우분투 20.04 + ROS2 foxy + CPP ROS2 패키지를 쌩으로 하나 만들고 싶을 때 어떻게 하는 지를 서술한다. + CMakelist.txt, package.xml 파일의 내용을 살펴본다. 1. 워크스페이스 만들기 아래 명령어로 ws를 만들고 colcon build 실행한다. 워크스페이스 이름은 자유다. $ mkdir -p ~/my_ros2_ws/src && cd ~/my_ros2_ws/ && colcon build tree 로 폴더 구조를 보면 아래와 같은 구조다. 굳이 확인 안해봐도 된다. $tree . ├── build │ └── COLCON_IGNORE ├── install │ ├── COLCON_IGNORE │ ├── local_setup.bash │ ├── local_se.. 2024. 2. 19.