Study 73

ROS2 with CPP - Introduction to Behavior Trees

본 포스트는 ROS1에 대한 전반적인 내용 및 ROS2 Python에 대한 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations BehaviorTree.CPP 설치방법 ros2_ws/src에서 아래 경로 git clone하고 그냥 바로 빌드하면 됩니다. $ git clone https://github.com/BehaviorTree/BehaviorTree.CPP.git BT ROS도 같이 깔아줍니다. $ git clone https://github.com/BehaviorTree/Beha..

ROS2 with C++ - Quality of Service

f본 포스트는 ROS1에 대한 전반적인 내용 및 ROS2 Python에 대한 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations 1. QoS란? ROS1에서는 TCP를 사용해서 메시지를 전달했었습니다. 그러나 이 방식은 Wifi나 불안정한 시스템 같이 데이터가 유실될 수 있는 그런 네트워크에서 사용되는 것을 고려하지는 않았습니다. ROS2에서는 데이터 전송을 위해 UDP와 DDS를 사용합니다. 이를 통해 우리는 node의 신뢰도(reliability) 레벨을 결정할 수 있습니다. R..

ROS2 with C++ - Node Parameters

본 포스트는 ROS1에 대한 전반적인 내용 및 ROS2 Python에 대한 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations ROS2에서 파라미터들은 각각 노드마다 따로 갖고있습니다(roscore가 없으므로). 따라서 노드가 죽으면 관련 파라미터들은 전부 사라집니다. 파라미터는 노드가 시작될 때, 혹은 동작중일때 불러올 수 있습니다. 1. create a demo code 1. 패키지 생성 $ ros2 pkg create --build-type ament_cmake paramete..

ROS2 with C++ - Lifecycle Nodes

본 포스트는 ROS1에 대한 전반적인 내용 및 ROS2 Python에 대한 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations managed nodes는 현재 C++에서만 사용 가능합니다. 1. Managed Nodes ROS2에는 다음과 같이 2가지 종류의 node가 있습니다. - Node()를 상속받은 node - LifecycleNode()를 상속받은 node managed nodes가 필요한 이유는? - 몇몇 node를 협동하게 해야할 때 필요합니다. 하나의 로봇 어플리케이션..

ROS2 with C++ - Node composition

본 포스트는 ROS1에 대한 전반적인 내용 및 ROS2 Python에 대한 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations ROS 프로그램(nodes)은 바로 실행하거나, launch 파일로 실행할 수 있게 실행 파일로 컴파일 됩니다. 하지만 각 실행 파일은 하나의 프로세스만 실행합니다. 이 말은, 단일 프로세스에서 ROS node는 하나 이상 실행할 수 없다는 것인데... ROS2에서는 components라는 방법을 사용하면 가능합니다. components는 ROS1의 node..

ROS2 with C++ - Action

본 포스트는 ROS1에 대한 전반적인 내용 및 ROS2 Python에 대한 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations 1. Action Server, Client 만들기 python과 내용은 같으므로 생략하고, 바로 예제 코드로 넘어갑니다. 1. 패키지 만들기 $ ros2 pkg create my_action --build-type ament_cmake --dependencies rclcpp rclcpp_action custom_interface 2. Action cpp 코..

ROS2 with C++ - Service

본 포스트는 ROS1에 대한 전반적인 내용 및 ROS2 Python에 대한 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations 1. Service Client 기본적인 내용은 python과 같으니, 다 생략하고 바로 예제로 넘어갑니다. 1. 패키지 만들기 $ ros2 pkg create client_cpp_pkg --build-type ament_cmake --dependencies rclcpp std_srvs 2. cpp 코드 작성 service_client.cpp #include..

ROS2 with C++ - Executors and Callbacks

본 포스트는 ROS1에 대한 전반적인 내용 및 ROS2 Python에 대한 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations 1. 간단한 Executor와 Callback 함수 구현하기 1. 아래 명령으로 패키지를 만듭니다 $ ros2 pkg create --build-type ament_cmake executors_exercises_pkg --dependencies rclcpp 2. executor_example_1.cpp #include #include class OdomSub..

ROS2 with C++ - Topic

본 포스트는 ROS1에 대한 전반적인 내용 및 ROS2 Python에 대한 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations 1. Topic Publisher ROS1, ROS2 Python과 겹치는 내용들은 모두 생략하고, 바로 코드로 들어가겠습니다. 1. 패키지를 만들어봅니다. cpp 패키지로 만들면 ROS1에서 봤던 것 같은 디렉토리 및 파일들이 생깁니다. $ ros2 pkg create topic_publisher_pkg --build-type ament_cmake --de..

ROS2 with python - Actions

본 포스트는 ROS1에 대한 전반적인 지식이 있다는 가정 하에 작성되었으며, The Construct Youtube 영상을 참고하였습니다. 또한, 시뮬레이션 환경은 turtlebot3 waffle_pi를 사용합니다 : https://github.com/ROBOTIS-GIT/turtlebot3_simulations ROS2의 Action 또한... Topic, Service와 마찬가지로 ROS1과 별 차이가 없습니다. 바로 예제로 들어가보겠습니다. 1. Action Server, Action Service, Custom Action 만들기 ROS1 과 마찬가지로... Action은 Topic과 Service를 합친 것입니다. 따라서 자세한 내용은 생략하고, 코드만 올리겠습니다. 1. 다음 명령으로 패키지를..