공부/ROS2(5)
-
커스텀 msg 등록
ROS2에서 기본적으로 제공되는 msg 타입이 아닌 사용자가 직접 구성한 msg 타입을 사용하는 방법에 대해 작성하였다. 튜토리얼을 바탕으로 직접 테스트를 진행하였다. msg 파일 생성 .../msg/Sensor.msg string name int64 status …/msg/SensorSet.msg pkg_device/Sensor[] sensors 여기서 주의해야 할 점은 msg 변수들은 모두 소문자로 구성해야 한다는 것이다. (X) pkg_device/Sensor[] Sensors (O) pkg_device/Sensor[] sensors CMakeLists.txt 설정 find_package(rosidl_default_generators REQUIRED) find_package(pkg_device RE..
2022.06.28 -
Executor
ROS1과 비교해서 ROS2의 큰 차이점 중 하나가 바로 executor가 있다는 점이다. 콜백함수를 용도에 맞게 다양한 콜백그룹 및 executor에 등록하여 사용할 수 있다. executor로는 SingleThreadedExecutor, MultiThreadedExecutor, StaticSingleThreadedExecutor 가 있다. 그 중에서도 MultiThreadedExecutor에 집중하여 작성하였다. 참고한 사이트는 아래와 같다. Executors - ROS 2 Documentation: Foxy documentation Using Callback Groups - ROS 2 Documentation: Foxy documentation examples/rclcpp/executors/cbg_..
2022.06.27 -
Behavior Tree Node
아래 내용은 BehaviorTree.CPP 튜토리얼을 바탕으로 작성되었다. Behavior Tree Node 에는 크게 Control node, Decorator, Leaf node가 있다. Control node 1. Sequence 동작 자식노드가 SUCCESS 반환하면 다음 자식노드 실행 자식노드가 FAILURE 반환하면 Sequence도 FAILURE 반환 모든 자식노드가 SUCCESS 반환하면 Sequence도 SUCCESS 반환 종류 Restart: 첫번째 자식노드부터 재시작됨 Tick again: SUCCESS를 반환한 자식노드는 건너뛰고, 계속 진행하던 자식노드를 계속 실행 2. Fallback(Selector or Priority) 동작 자식노드가 FAILURE 반환하면 다음 자식노드 실..
2022.06.26 -
Behavior Tree setup&tutorial (Groot 포함)
Behavior Tree 소스코드 컴파일 ROS2의 bt_navigator 사용을 위한 필수 라이브러리인 Behavior Tree를 소스코드 레벨에서 컴파일 하는 방법을 정리했다. 먼저 아래와 같이 소스코드를 git clone 한다. (Behavior Tree github) git clone https://github.com/BehaviorTree/BehaviorTree.CPP Behavior Tree 라이브러리의 의존성 패키지를 설치한다. sudo apt-get install libzmq3-dev libboost-dev 소스코드 빌드 후, 설치한다. cd BehaviorTree.CPP/ mkdir build; cd build cmake .. make sudo make install 더보기 Behavio..
2022.06.25 -
BehaviorTree.CPP 라이브러리 튜토리얼
리드미에서 제공하는 튜토리얼을 따라 해보았다. (BehaviorTree.CPP 튜토리얼) 그 중 내가 생각했을 때, 꼭 필요하다고 생각되는 부분 위주로 정리했다. Blackboard port 추가 (generic type) 1. generic type struct 추가 (convertFromString함수는 사용자가 구현해야 함) struct Position2D { double x; double y; double th; }; // Template specialization to converts a string to Position2D. namespace BT { template inline Position2D convertFromString(StringView str) { // The next line ..
2022.06.25