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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/JXC9x/btsg4jaB4fZ/VkdpkHcXSsYehu7SaFY0cK/img.png)
패키지를 생성해준다. 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와 플..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/6DA6a/btsg3Vt5Nms/cNm99c55JGAPHPyx3UMx61/img.png)
Moveit Task Constructor (이하 MTC)는 복잡한 모션 플래닝 문제는 간단한 하위 문제들로 구성하도록 해주는 프레임워크이다. 가장 상위 레벨의 문제는 Task라하고, 하위 문제들은 Stages라고 한다. Stage들을 구성하는 순서는 상관없고 각 Stage들의 타입에 제한될 뿐이다.결과 흐름에는 3가지 유형이 있다. Generator, Propagator, Connector 단계이다. Generators는 독립적으로 계산되면서 양방향으로 전부 결과를 전달한다 (IK sampler는 도달하고 빠지는 모션 전부와 관련 있는 것 처럼) Propagators는 이웃 stage에서 결과를 받고, 하위 문제를 풀고 반대편의 이웃에게 결과를 전달한다. 구현에 따라서 앞으로, 뒤로, 양방향으로..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dB0Sa4/btsbTvCbIuC/sCXOD58G3Vl1sp816J2Kdk/img.png)
Towards a Natural Motion Generator : a Pipeline to Control a Humanoid based on Motion Data https://ieeexplore.ieee.org/document/8967941 Towards a Natural Motion Generator: a Pipeline to Control a Humanoid based on Motion Data Imitation of the upper body motions of human demonstrators or animation characters to human-shaped robots is studied in this paper. We present a pipeline for motion retarge..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/9CMnW/btsbTUIa0SU/0VIxyIe4tZl9JIokhDU36K/img.png)
Introduction to The Dynamic Pickup and Delivery Problem Benchmark Introduction to The Dynamic Pickup and Delivery Problem Benchmark -- ICAPS 2021 Competition The Dynamic Pickup and Delivery Problem (DPDP) is an essential problem within the logistics domain. So far, research on this problem has mainly focused on using artificial data which fails to reflect the complexity of real-world problems. I..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/uFUlq/btr7iMHToAY/I5XpH3sekeDV6u2ZSl1LR1/img.png)
editor, Seungeon Baek(백승언) Reinforcement learning Research Engineer [Kor] 안녕하세요, 오랜만에 블로그를 쓰게 되네요! 이번 글은 논문 리뷰가 아닌, 강화학습 관련한 저의 첫 포스팅 글입니다. 이번에 작성하는 글에서 다루고자 하는 내용은 "강화학습은 어떤 문제를 풀 수 있는가?"입니다. 이와 관련하여, 비슷한 글이 있는지 여러 키워드로 검색을 해 보았는데 강화학습이 어떤 문제를 풀 수 있는지에 대한 내용보다는, 강화학습이 현재 적용되고 있는 분야와 관련된 블로그들이 대부분임을 알 수 있었습니다. (Application of RL, Usage of RL,... etc) 그렇기에, 부족하지만, 제가 한 번 강화학습이 어떤 문제를 풀 수 있는지에 대한 ..
오랜 생각이 하나 있는데, 좀 두서 없고 말도안되더라도 용서해주시길 바랍니다. ㅎㅎ 하나의 가정(상상)에서 시작한다. 만약 로봇들이 만들어진 목적에 맞게 완벽하게 작동하면 어떻게 될까? 그리고 그 유효성이 입증돼서 사용가능한 로봇의 수가 굉장히 많아진다면? 그렇게되면, 로봇 한대의 개체는 한 가지 이상의 작업을 잘 하기위한 복잡한 시스템으로 여겨져 왔지만 그냥 입력을 주면 당연히 그 작업을 잘 수행해내는 유닛(unit)으로 보게되는 시점이 올 것이다. 그렇다면 여러대의 로봇 묶음을 컴퓨터의 CPU처럼 생각해서 하나의 큰 작업 과정 자체를 작은 작업 단위들로 프로그래밍을 할 수 있을 것이다. CPU의 연산 유닛을 로봇 묶음의 로봇 한 대로 볼 수 있게되는 것이다. 그렇게해서 소프트웨어나 서비스를 개발하듯이..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b2AMG5/btr3dTq06F3/oJyR5mQs0ZixPwqhynnER0/img.png)
이번글에서는 BT의 Design principle에 대해서 알아보자. 사실 디자인 정책 같은 것까지 알아야할 필요가 있나 싶지만, 기본적인 내용은 숙지한 상태에서 Groot 같은 BT를 만들어주는 툴을 사용해보도록 하자. 결국 설계를 하고 들어가냐 아니냐, 혹은 큰 틀을 이해하고 진행하냐가 숙련도의 차이를 만들테니깐. BT의 기본 컨셉 Root로부터 tick이라는 시그널은 tree를 통해 마지막 leaf 노드까지 전달된다. tick 시그널을 받은 트리 노드는 callback을 실행한다. callback은 SUCCESS, FAILURE, RUNNING을 리턴한다. 트리 노드가 한개 이상의 자식노드가 있다면, tick을 전파할 수 있고 전파 기준은 자식이 얼마나 시그널을 받았는지에 따라 다르다. leaf 노..