전체 글(23)
-
커스텀 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 -
RaspberryPi에 Ubuntu 20.04 LTS server 설치
Raspberry pi 4B Model B에 Ubuntu 20.04 LTS server 설치하는 방법이다. ROS2 foxy 버전을 터틀봇에서 돌릴 예정인데, 최대한 노트북(개발용 PC)과 비슷한 환경으로 구성하고자 OS를 라즈비안이 아닌 우분투로 선택했다. micro SD 카드에 이미지를 설치하기 위해 rpi imager를 다운로드 받자. rpi imager 실행 후, Operating System에서 아래와 같이 Other general-purpose OS를 선택한다. 그 다음 Ubuntu를 선택한다. 그 다음 Ubuntu Server 20.04 (64bit)를 선택한다. 노트북에 SD카드를 인식시킨 후, Storage 선택하여 아래 그림과 같이 Write 한다. 이미지 굽기 완료 후, 라즈베리파이에..
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