RGring / drl_local_planner_ros_stable_baselines

BSD 3-Clause "New" or "Revised" License
133 stars 36 forks source link

Cann't find the msg flatland_msgs::Step #2

Closed miangli closed 5 years ago

miangli commented 5 years ago

Hello,RGring. I try to catkin_make drl_local_planner_ros_stable_baselines and there is an error that "fatal error: flatland_msgs/Step.h: No such file or directory". And I find that because toggle_setup_init.cpp(in drl_local_planner_ros_stable_baselines/rl_bringup/src ) includes <flatland_msgs/Step.h>, but in fact there is no Step.msg in flatland_msgs. So how can I solve this problem. Thanks a lot for your answer and you codes!

RGring commented 5 years ago

Hi, Did you do the steps in the "Setup Learning Infrstructure" in the ReadMe-Section? So is there a flatland package in your src-folder somwhere? If yes, which branch are you on?

Please don't hesitate to open more issues or ask more questions. I guess you are the first -- apart from me -- getting it to work, so there might be some more issues. :)

miangli commented 5 years ago

Hi Ronja, Firstly thanks for your immediate answer. Yes I havd done the the steps in the "Setup Learning Infrstructure",installing the necessary packages as the .rosinstall file you give.In fact. I installed all this packages form your github homepage, so I think the version of them(like flatlamd_msg,pedsim_ros .. ) are same as yours. In addition, I jump to the original flatland project you forked before(written by Joseph Duchesne ), there is no Step.msg either (https://github.com/avidbots/flatland/tree/master/flatland_msgs/msg). So I wonder if you added the Step.msg into the flatland package?

Here is the code of drl_local_planner_ros_stable_baselines/rl_bringup/src/ toggle_setup_init.cpp

include <ros/ros.h>

include <flatland_msgs/Step.h>

int main(int argc, char** argv){

ros::init(argc, argv, "map_echo"); ... And I think the problem is caused by #include <flatland_msgs/Step.h> this code. That is all the information. Thanks your answer again :)

RGring commented 5 years ago

Yes. I added that. That's why you need the correct version of the fork. You shouldn't download the forks manually, but install them via rosinstall. Please follow the exact steps in the ReadMe. ... cp .rosinstall ../ cd .. rosws update ... That should download all necessary forks and set them on the correct branch and so on. (e.g. the flatland package should be on branch "pedsim_integration" (git checkout pedsim_integration).

Hopefully that helps.

miangli commented 5 years ago

Ok,I got it. I will try it as your ReadMe,using rosws update.Then give you the feedback. Thanks again~~

miangli commented 5 years ago

Hello,Ronja, Sorry for my delayed feedback. Your suggestion does work.I successfully executed the trained ppo1-agent with static and dynamic objects,using the example_agents yoy give.But there was still a problem about the rviz plugin -- " [ERROR] [1561044496.531291488, 265.100002651]: PluginlibFactory: The plugin for class 'rviz_plugin/Teleop' failed to load. Error: According to the loaded plugin descriptions the class rviz_plugin/Teleop with base class type rviz::Panel does not exist. Declared types are rviz_plugin_tutorials/Teleop ". And the " spencer_tracking_rviz_plugin/TrackedGroups " 、“spencer_tracking_rviz_plugin/TrackedPersons” failed to load neither. But it seems have a little effect on the project, so I just pass. If you have any idea, that will be very nice :). It took me a lot of time to install the mpi4py package in the virtual env. Finally I solved this problem by sudo apt install python3-dev, which helps the mpi4py find the Python.h file.

In addition, I find that you still need a global planner and the map is totally known for the robot.You seem to just use DRL as a local planner. I have read other papers that use DRL to guide robot move in the unknown env and the robot just use the laser or camera to detect the env.They don't need to get the totally known map. Here is the detailed vedio https://www.youtube.com/watch?v=XHoXkWLhwYQ&list=LLZUB8kahGg--EF5KZKk_tCg&index=117&t=1s . Maybe you have seen it before.

Of course, your project is excellent too! Finally, thanks again for your help.You are really beautiful in mind and body, which is my sincere compliment @(。・o・)@ . Thank you~~

RGring commented 5 years ago

Hi miangli. Thanks for your feedback. I am really happy to hear, that you got it working. Yes I replaced "only" the local planner by DRL. It depends, what the robot should accomplish. If the robot will be applied in a "big" world with different rooms, hallways and so on (like airport, shopping centers), it makes totally sense to use a global planner to find the optimal path to the endgoal and then let the drl-local planner drive along that given path, avoiding local obstacles. Without global plan the drl might choose a path that will - after a while - end in a dead end. The global path just gives many subgoals to the drl-planner. :)

Those plugins are not super relevant for the project, but the teleop panel you can find here. rviz_plugin/Teleop: https://github.com/MohitShridhar/gui_teleop

...spencer_tracking_rviz_plugin I have to find out why it's not working.

miangli commented 5 years ago

Hi Ronja. Yes you are right.It depends on what the robot need to accoplish.Your project is good enough for the scenes you mention. My research directions is about guiding the robot to navigate in the strange environment without a map, so I need drl to perform as a global and local planner. In addition, I am curious about the difference between your drl local planner and traditional local planner like DWA(dynamic windows approach),TEB(time elastic band)... Could you share me your Master Thesis? Maybe I can find the answer in it. Also I will read other papers to figure it out. My email is weihegood@gmail.com. Thank you (^-^)~~