Giter VIP home page Giter VIP logo

dwa_planner's Introduction

dwa_planner

CI issue_opened issue_closed

Overview

ROS implementation of DWA(Dynamic Window Approach) Planner

The API documentation is available at https://amslabtech.github.io/dwa_planner/

Note: This simulator is not provided.

demo 1

Environment

  • Ubuntu 20.04
  • ROS Noetic

Install and Build

# clone repository
cd /path/to/your/catkin_ws/src
git clone https://github.com/amslabtech/dwa_planner.git

# build
cd /path/to/your/catkin_ws
rosdep install -riy --from-paths src --rosdistro noetic # Install dependencies
catkin build dwa_planner -DCMAKE_BUILD_TYPE=Release     # Release build is recommended

How to use

roslaunch dwa_planner local_planner.launch

Running the demo with docker

git clone https://github.com/amslabtech/dwa_planner.git && cd dwa_planner

# build an image, create a container and start demo (Ctrl-c: stop a container and exit)
docker compose up
# remove a container
docker compose down

Running the demo without docker

Using simulator

# clone repository
cd /path/to/your/catkin_ws/src
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git

# build
cd /path/to/your/catkin_ws
rosdep install -riy --from-paths src --rosdistro noetic
catkin build -DCMAKE_BUILD_TYPE=Release

# run demo
export TURTLEBOT3_MODEL=burger
roslaunch dwa_planner demo.launch

demo 2

Node I/O

Node I/O

Published/Subscribed Topics

Access here

Runtime requirement

  • TF (from GLOBAL_FRAME to ROBOT_FRAME) is required

Parameters

Access here

References

dwa_planner's People

Contributors

ibuki1805 avatar jumpei-arima avatar naoya-sugiura avatar toshikinakamura0412 avatar ttaannaakkaa avatar yasunorihirakawa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

dwa_planner's Issues

how to create randomly moving virtual obstacles

Actually, DWA can be used regardless of the dynamic or static environment.
All you have to do is to update the local map periodically according to the observations by LiDAR and so on.
(If USE_SCAN_AS_INPUT=true, you don't even need to do that.)

The gif animation is achieved by randomly moving virtual obstacles of appropriate size.
ROS comes with a visualization tool called rviz which makes it easy to visualize like the gif.

Originally posted by @YasunoriHirakawa in #12 (comment)

some question about topic name

I found that I can't change the topic name,I have modified the following code,
first,in dwa_planner.cpp
local_map_sub = nh.subscribe("/map", 1, &DWAPlanner::local_map_callback, this);
second, in local_planner.launch
<remap from="/local_map" to="/map"/>
Although I have made the above changes, the algorithm still cannot communicate with the map_server, the topic name of map_server is /map instead of /local_map
I don't know why this is, hope you can help

Close to an obstacle

When the robot truns,it will get close to the obstacle.Is there any better solution?

hello,I have a question;

when I run follow readme , but my terminal always told me that I have not update my local map, my goal and so on. How can I solve this problem? thank you !

include issue when getting the code running

hi, sorry its another probably very obvious question but a huge portion of the dwa_planner.h #include issues have appeared, and its asking to update the include path but doesn't allow me to go "up" a level. is there a way to fix the include issue. ( sorry i know these a really basic questions but other resources dont fix the issue)

Robot hits object while turning in navgation

my robot is differential drive, it turns in the corner while navigating it hits things and it passes so close. Except increasing basefootprint, inflation radius is there any solution to handle the problem?

Default parameter is not good

The default parameters are not appropriate, making it difficult to tune and check the operation.
For example, the maximum acceleration setting is too small, giving the illusion that no path is generated.

Question regarding using Non LiDAR sensor

Hi, thanks for the previous help, I was wondering how to get this code to work with an array of Time of Flight sensors, specifically how it would work if the sensor_msg was /range and not /scan for the VL53L0X ROS Driver.
heres the link to the driver ros code as I am using a Raspberry Pi : https://github.com/sebastiengemme/vl53l0x-ros.git

Sorry if this isnt super relevant I'm just struggling to find an answer.

newbie question (sorry if im missing the obvious)

sorry im super new to ros and am hoping to use DWA for a time of flight sensor, so i have the same ubuntu 20.04 and ROS Noetic, but after following your instructions I get an error :
Error: The current folder is not part of a catkin workspace.

Im not sure whats wrong and am struggling to find advice on the matter. the folder is in catkin_ws/src and i have catkin_tools installed as well. i dont have any othe projects within the workspace yet tho. any advice is greatly appreciated.

How to execute the program

Hello, author, how to realize analog broadcasting local_goal, how to realize TF (from LocalMap_FRAME to ROBOT_FRAME) transformation?

standardization

I have a question, should the scoring of the trajectory be standardized?

Question regarding the code

Hi,

In motion function while finding the robot position x and y, it is always starting with 0 (State(0,0,0,current linear velocity, current angular velocity)) . So in this case x and y position will be from 0 to a maximum position of 2.0 or 3.0 . Then without knowing the current position how do you find the distance for the far away obstacles?

why - State(0,0,0,current linear velocity, current angular velocity)
why not - State(0,current_x,current_y,current linear velocity, current angular velocity)

躲避外围的墙

std::vector<std::vector> outside_wall_list;

//最终需要加入外围墙壁
fprintf(stderr,"obst num without wall: %d ============/n",input_data->obst_list_.size());
outside_wall_list.clear();
for(int i=0;i<101;i++){//左
std::vector outside_wall_L;
double outside_wall_x,outside_wall_y;
outside_wall_x=-0.25;
outside_wall_y=-0.25+0.5*i;
outside_wall_L.push_back(outside_wall_x);
outside_wall_L.push_back(outside_wall_y);
outside_wall_list.push_back(outside_wall_L);//把左侧墙壁加入障碍
}
input_data->obst_list_.insert(input_data->obst_list_.end(),outside_wall_list.begin(),outside_wall_list.end());
outside_wall_list.clear();

for(int i=0;i<101;i++){//右
  std::vector<double> outside_wall_R;
  double outside_wall_x,outside_wall_y;
  outside_wall_x=50.25;
  outside_wall_y=-0.25+0.5*i;
  outside_wall_R.push_back(outside_wall_x);
  outside_wall_R.push_back(outside_wall_y);
  outside_wall_list.push_back(outside_wall_R);//把左侧墙壁加入障碍
}
input_data->obst_list_.insert(input_data->obst_list_.end(),outside_wall_list.begin(),outside_wall_list.end());
outside_wall_list.clear();

for(int i=0;i<101;i++){//下
  std::vector<double> outside_wall_D;
  double outside_wall_x,outside_wall_y;
  outside_wall_y=-0.25;
  outside_wall_x=-0.25+0.5*i;
  outside_wall_D.push_back(outside_wall_x);
  outside_wall_D.push_back(outside_wall_y);
  outside_wall_list.push_back(outside_wall_D);//把左侧墙壁加入障碍
}
input_data->obst_list_.insert(input_data->obst_list_.end(),outside_wall_list.begin(),outside_wall_list.end());
outside_wall_list.clear();

for(int i=0;i<101;i++){//上
  std::vector<double> outside_wall_U;
  double outside_wall_x,outside_wall_y;
  outside_wall_y=50.25;
  outside_wall_x=-0.25+0.5*i;
  outside_wall_U.push_back(outside_wall_x);
  outside_wall_U.push_back(outside_wall_y);
  outside_wall_list.push_back(outside_wall_U);//把左侧墙壁加入障碍
}
input_data->obst_list_.insert(input_data->obst_list_.end(),outside_wall_list.begin(),outside_wall_list.end());

fprintf(stderr,"obst num without wall: %d ============/n",input_data->obst_list_.size());

No update after roslaunch

Hi author, I launched the local_planner.launch. The terminal output warned no update was made in Robot Footprint, Local Goal, Scan, Odom, etc.

I wonder how was your demonstrated gif in README achieved. Is there a default map or something?

Thanks for your time and code! I have been studying the implementation of DWA recently.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.