https://navigation.ros.org/configuration/packages/configuring-dwb-controller.html DWB Controller — Nav2 1.0.0 documentation DWB Controller Source code on Github. The DWB controller is the default controller. It is a fork of David Lu’s controller modified for ROS 2 using the Dynamic Window Approach. Example controller_server: ros__parameters: # controller server parameters (se navigation.ros.org ..
오늘은 학술적인 내용보다는 조금은 테크니컬한 내용을 가져왔습니다. ROS2와 함께 Moveit2도 같이 Release가 되어 여러 로봇 연구에 사용되고 있는데요. 그 중 최근 제가 관심 있게 보고 있는 기능은 Hybrid Planning입니다. 모바일 로봇에 조금 익숙하신 분들은 Global Planner와 Local Planner에 대한 개념을 알고 계실 겁니다. Motion planning은 크게 봤을 경우 “Sense-Plan-Act” 방식을 사용하는데요. 이런 방식은 환경이 변하지 않는 상태에서 진행하는 Global motion planning에서는 잘 작동합니다. 다만 주변 환경이 다이나믹하게 변하는 경우에는 Global planner로만으로는 Task를 부드럽게 수행하기 어렵습니다. 이런 이유..
Motion Planning Python API(링크) ▶ Moveit planning Scene Configuration 무브잇은 기본적으로 다수의 플래너를 제공한다. 이런 플래너마다 세팅과 파라미터를 설정해줘야하는데, ROS2에서는 configuration yaml 파일을 작성하면 된다. moveit_py 노드와 맞는 cofiguration 파일을 보자. planning_scene_monitor_options: name: "planning_scene_monitor" robot_description: "robot_description" joint_state_topic: "/joint_states" attached_collision_object_topic: "/moveit_cpp/planning_sce..
패키지를 생성해준다. ros2 pkg create \ --build-type ament_cmake \ --dependencies moveit_task_constructor_core rclcpp \ --node-name mtc_node mtc_tutorial ros2로 넘어가면서 노드 이름을 추가해서 cpp 파일을 바로 만들 수 있다. 만들어진 mtc_node.cpp 파일을 확인해보자. #include #include #include #include #include #include #if __has_include() #include #else #include #endif #if __has_include() #include #else #include #endif 헤더에는 로스2에 필요한 rclcpp와 플..
Moveit Task Constructor (이하 MTC)는 복잡한 모션 플래닝 문제는 간단한 하위 문제들로 구성하도록 해주는 프레임워크이다. 가장 상위 레벨의 문제는 Task라하고, 하위 문제들은 Stages라고 한다. Stage들을 구성하는 순서는 상관없고 각 Stage들의 타입에 제한될 뿐이다.결과 흐름에는 3가지 유형이 있다. Generator, Propagator, Connector 단계이다. Generators는 독립적으로 계산되면서 양방향으로 전부 결과를 전달한다 (IK sampler는 도달하고 빠지는 모션 전부와 관련 있는 것 처럼) Propagators는 이웃 stage에서 결과를 받고, 하위 문제를 풀고 반대편의 이웃에게 결과를 전달한다. 구현에 따라서 앞으로, 뒤로, 양방향으로..
목차 1. RTOS? [진행중] 2. Micro-ROS? [x] 3. Micro-ROS 예제 [x] 4. Micro-ROS를 통한 모터 제어 [x] 임베디드 임베디드 운영체제 단순한 절차적 작업 수행 8비트, 16비트 마이크로 컨트롤러 및 마이크로 프로세스 사용. 임베디드 리눅스 저성능 마이크로 프로세스, 한정된 메모리 환경을 위한 리눅스 장점 높은 확장성 다양한 cPU지원 단점 RTOS에 비해 많은 메모리 요구 범용 OS로서, 리얼타임 지원 X RTOS? Real-Time Operating System 어떤 Task 정해진 시간 안에 처리해야할 때, 사용하는 운영체제로, 즉 실시간 처리를 보장해주는 OS 일반적 OS와의 차이점으로 RTOS는 효율성, 시간 제약(속도), Fairness가 특징 보다 시간..
그동안은 ROS2의 학습용 패키지인 turtlesim 패키지만을 돌려봤습니다. 이번 차 부터는 그 것들이 어떻게 돌아가는 지 내부를 알아보면서 다시 한 번 학습을 해 보겠습니다. 오늘은 노드(node)에 대해 알아보겠습니다. 노드는 ROS2 시스템에서 가장 기본적인 실행 단위를 의미하고, 로봇시스템의 기능 하나하나를 노드로 만들어서 전체 시스템을 돌리게 된다고 생각하면 됩니다. 이전 튜토리얼: ROS2 foxy 튜토리얼2 - turtlesim과 rqt 1. ROS 그래프 ROS 시스템에서 가장 중요한 역할 중 하나는 유저들이 개발한 기능들간의 통신입니다. 그리고 각 기능들은 노드로 구현되는데 이 노드간의 통신과 노드의 집합을 그래프라고 일컫습니다. 2. ROS2에서의 노드 앞서 말했든 노드는 하나의 기능..
ROS2를 처음 학습할 때 가장 먼저 돌려볼 프로그램이 turtlesim 입니다. 앞으로 turtlesim이 어떻게 돌아가는 지 확인해 보면서 ROS2의 필수 요소들을 이해해 보도록 합니다. 또한 rqt는 ROS2의 GUI툴 중 하나로 ROS1 때와 마찬가지로 중요한 역할을 해줄 녀석입니다. ROS2에서는 좀 더 유저 친화적으로 나왔다고하니 기대해 보도록 하겠습니다. 오늘은 turtlesim을 통해 node를 실행하는 방법을 알아보겠습니다. 이전 튜토리얼: ROS2 foxy 튜토리얼1 - 설치 및 설정 1. turtlesim 설치 sudo apt update sudo apt install ros-foxy-turtlesim 제대로 깔렸는지 확인해줍니다. ros2 pkg executables turtlesi..