본문 바로가기

ROS

(16)
[ROS] Move Base (5) Global Planner Code 분석 global_planner nav_core의 base_global_planner의 plugin이다. class 정의를 살펴보면 다음과 같다. class GlobalPlanner : public nav_core::BaseGlobalPlanner { public: GlobalPlanner(); GlobalPlanner(std::string name, costmap_2d::Costmap2D* costmap, std::string frame_id); ~GlobalPlanner(); void initialize(std::string name, costmap_2d::Costmap2DROS* costmap_ros); void initialize(std::string name, costmap_2d::Costmap2D*..
[ROS] Move Base (4) Global Planner 개념 아래 사이트를 참고해서 포스팅 하였다. http://wiki.ros.org/global_planner global_planner - ROS Wiki kinetic melodic noetic Show EOL distros: EOL distros: hydro indigo jade lunar hydro: Documentation generated on August 27, 2015 at 02:07 PM (doc job).indigo: Documentation generated on March 03, 2019 at 11:32 AM (doc job).jade: Documentation gene wiki.ros.org Global Planner 책임 global costmap을 확인하고, goal까지의 path를 만..
[ROS] Move Base (3) Move Base Code 분석 여기서 분석하는 코드는 다음 github에서 확인 할 수 있다. https://github.com/ros-planning/navigation GitHub - ros-planning/navigation: ROS Navigation stack. Code for finding where the robot is and how it can get somewhere else. ROS Navigation stack. Code for finding where the robot is and how it can get somewhere else. - GitHub - ros-planning/navigation: ROS Navigation stack. Code for finding where the robot is and h..
[ROS] Move Base (2) Velocity & Acceleration Velocity와 Acceleration에 대한 이해의 필요성 local planner가 global path와 odom, local costmap을 가지고 cmd_vel을 준다. 여기서 cmd_vel은 로봇의 linear velocity와 angular velocity가 합쳐진 형태이다. 여기서 로봇이 낼 수 있는 최대 linear velocity와 angular velocity가 존재 할 것이고, 이와는 별개로 로봇이 제어 가능한 초대 linear velocity와 angular velocity가 존재한다. 또한, 로봇이 가속할 수 있는 정도 또한 알고 있어야 한다. (갑자기 멈춰있는 로봇에게 0.1초안에 1 m/s로 움직이라 하는 건 말이 안된다.) navigation에서는 이러한 constrain..
[ROS] Move Base (1) Navigation Stack 현재 포스팅 기준 환경입니다. ROS melodic ubuntu 20.04 ros2에서의 navigation은 추후에 다룰 예정 Move Base란? ros의 navigation 관련된 것들이 모여 있는 package로, 로봇 navigation을 할 때 많이 사용하는 package이다. 자세한 document는 다음을 참고 하면 된다. http://wiki.ros.org/move_base move_base - ROS Wiki kinetic melodic noetic Show EOL distros: EOL distros: electric fuerte groovy hydro indigo jade lunar diamondback: Only showing information from the released ..
[ROS] XmlRpc 사용법 ubuntu 20.04, ROS noetic 기준 포스팅 XmlRpc란? ROS launch file에서 yaml file을 load해주는 편리한 도구이다. 사용법 1. launch file에 yaml file load launch/test.launch param/test.yaml xml_params: value: "what" type: "test" list: [ "1", "2", "3" ] 2. main.cpp code 작성 #include int main(int argc, char **argv) { ros::init(argc, argv, "xml_study"); ros::NodeHandle nh; XmlRpc::XmlRpcValue params; nh.getParam("xml_params", para..
[ROS] plugin 사용법 본 포스팅은 ubuntu 20.04 , ros noetic 기준으로 설명 되어 있습니다!! ROS Plugin이란? ros에서 프로그램 런타임에 특정 패키지를 load하여 사용할 수 있게 해주는 기능이다. 사전에 정의된 base interface를 상속받은 플러그인이면 어떤 것이든 사용 할 수 있게 해주며, 특정 기능에 대해 추상화를 잘 해준다. ROS Plugin을 사용하면 좋은 때 특정 기능을 개발해야 하는데 기능의 인터페이스는 변하지 않고 내부 기능만 계속 변화할 때 특정 기능이 개발이 안돼있는 경우 mocking하여 임시로 개발할 때 상황에 따라 사용해야하는 기능이 달라질 때 Interface, BaseClass plugin을 설계 할때, 먼저 만들고자 하는 기능의 interface를 정의 한다...
[ Server / Client ] 서버 클라이언트 작성법 + Custom service file 작성법 ROS의 Server / Client 노드를 작성하는 법을 알아보자. 먼저, Server와 Client를 사용하기 위해 Service file을 작성해야 한다. 이를 위해 저번에 만들어 놓았던 message pkg인 study_msgs에 들어가서 CMakeLists.txt (경로 : ~/catkin_ws/src/study_msgs/)를 다음과 같이 수정해 준다. cmake_minimum_required(VERSION 3.0.2) project(study_msgs) find_package(catkin REQUIRED COMPONENTS std_msgs message_generation ) add_message_files( FILES my_msg.msg ) #####서비스 파일 추가 ###### add_se..