GithubHelp home page GithubHelp logo

river-lab / tentabot Goto Github PK

View Code? Open in Web Editor NEW
34.0 11.0 18.0 309.21 MB

Tentabot: Navigation Framework for Mobile Robots by Evaluating Motion Primitives (Tentacles)

CMake 3.22% MATLAB 12.77% C++ 58.31% Python 24.07% Dockerfile 0.62% Shell 1.03%
reactive-navigation trajectory-sampling heuristic-evaluation local-mapping mobile-robots deep-reinforcement-learning dynamic-environments ros gazebo robotics

tentabot's Introduction

Tentabot-DRL: Deep Reinforcement Learning based Robot Navigation in Dynamic Environments using Occupancy Values of Motion Primitives

teaser teaser teaser teaser teaser teaser

Tentabot-Heuristic: Reactive Navigation Framework for Mobile Robots by Heuristically Evaluated Pre-sampled Trajectories (Tentacles)

teaser teaser

1. Citation

@inproceedings{akmandor2022deep,
  title={Deep reinforcement learning based robot navigation in dynamic environments using occupancy values of motion primitives},
  author={Akmandor, Ne{\c{s}}et {\"U}nver and Li, Hongyu and Lvov, Gary and Dusel, Eric and Padir, Ta{\c{s}}kin},
  booktitle={2022 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={11687--11694},
  year={2022},
  organization={IEEE}
}
@article{akmandor2021reactive,
  title={Reactive navigation framework for mobile robots by heuristically evaluated pre-sampled trajectories},
  author={Akmandor, Ne{\c{s}}et {\"U}nver and Padir, Ta{\c{s}}kin},
  journal={International Journal of Robotic Computing},
  volume={3},
  number={1},
  pages={47--68},
  year={2021}
}
@inproceedings{akmandor20203d,
  title={A 3d reactive navigation algorithm for mobile robots by using tentacle-based sampling},
  author={Akmandor, Ne{\c{s}}et {\"U}nver and Padir, Ta{\c{s}}kin},
  booktitle={2020 Fourth IEEE International Conference on Robotic Computing (IRC)},
  pages={9--16},
  year={2020},
  organization={IEEE}
}

2. Related Papers

  • Akmandor, N. Ü., Li, H., Lvov, G., Dusel, E., & Padir, T. (2022, October). Deep reinforcement learning based robot navigation in dynamic environments using occupancy values of motion primitives. In 2022 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) (pp. 11687-11694). IEEE. [DOI:10.1109/IROS47612.2022.9982133], [arXiv:2208.08034].
  • Akmandor, N. Ü. and Padır, T. (2021). Reactive navigation framework for mobile robots by heuristically evaluated pre-sampled trajectories. International Journal of Robotic Computing, 3(1), 47-68. [DOI:10.35708/RC1870-126265], [arXiv:10.35708/RC1870-126265]
  • Akmandor, N. Ü., & Padir, T. (2020, November). A 3d reactive navigation algorithm for mobile robots by using tentacle-based sampling. In 2020 Fourth IEEE International Conference on Robotic Computing (IRC) (pp. 9-16). IEEE. [DOI:10.1109/IRC.2020.00009], [arXiv:2001.09199].
  • Von Hundelshausen, F., Himmelsbach, M., Hecker, F., Mueller, A., & Wuensche, H. J. (2008). Driving with tentacles: Integral structures for sensing and motion. Journal of Field Robotics, 25(9), 640-673. [DOI:10.1002/rob.20256].

2. Videos

3 Installation

The system has been tested with 20.04 (ROS Noetic).

Follow the tutorials to

To install tentabot, either follow the manual installation instructions, or attempt an automated install with the following instructions (experimental):

3.1 Clone the tentabot repository into the src folder of your catkin workspace, and change into the tentabot directory.

git clone [email protected]:RIVeR-Lab/tentabot.git
cd tentabot

3.2 Run the bash script to automate installing all dependencies.

Note: This script requires superuser and makes system changes. Review the script before running.
chmod +x install_tentabot.sh
./install_tentabot.sh

3.3 Source the workspace, after successfully built.

source devel/setup.bash

4. Simulation

Tentabot features out of the box simulation support for certain robots. You can view the status of this support here:

Robot / Model Manufacturer Simulation Real Methods
Turtlebot 3 / Burger Robotis ✔️ heuristic/drl
Firefly AscTec ✔️ heuristic/drl
ROSbot Husarion ✔️ heuristic/drl
Stretch Hello Robot ✔️ ✔️ heuristic/drl
Jackal Clearpath Robotics ✔️ ✔️ heuristic
Turtlebot 2 Turtlebot ✔️ heuristic/drl

Tentabot navigation framework is formed by several submodules such as:

a. Simulation Environment (Gazebo)
b. Data Visualization (Rviz)
c. Map Utility Server
d. Tentabot Server
e. Tentabot DRL (Training / Testing)

4.1 Configure the configuration files located in:

4.1.1 To enable Tentabot DRL, set "drl_service_flag: true" in the Tentabot Server configuration file.
4.1.2 Set the "mode" parameter in the Tentabot Server configuration file as either "training" or "testing".
4.1.3 To continue "training" or start "testing", set the "initial_training_path" parameter in the Tentabot Server configuration file by providing the location of a trained model.

4.2 Open the tentabot_framework.launch file.

4.2.1 Configure the submodule flags.
Argument Description
sim_flag If True, it launches Gazebo simulation.
rviz_flag If True, it launches Rviz for data visualization.
map_utility_flag If True, it runs the Map Utility Server.
tentabot_server_flag If True, it launches the Tentabot Server.
4.2.2 Set the names of configuration files.
Argument Examples File Location
config_task_name config_task_nav_cylinders0_firefly, config_task_nav_forestX_firefly, config_task_nav_turtlebot3, config_task_nav_stretch, config_task_nav_jackal, config_task_nav_jackal_real, config_task_nav_rosbot task_nav
config_map_utility config_map_utility_cylinders0_firefly, config_map_utility_forestX_firefly, config_map_utility_turtlebot3, config_map_utility_stretch, config_map_utility_jackal, config_map_utility_jackal_real, config_map_utility_rosbot map_utility
config_tentabot_server config_tentabot_server_firefly, config_tentabot_server_turtlebot3, config_tentabot_server_stretch, config_tentabot_server_jackal, config_tentabot_server_jackal_real, config_tentabot_server_rosbot tentabot_server

4.3 Run the Tentabot Framework launch file in a terminal window:

roslaunch tentabot tentabot_framework.launch

5. Real Robot

We tested our framework in real robot platforms including Turtlebot2, Stretch and Jackal. teaser teaser

5.1 Run the robot bring-up (Example: Jackal) which includes:

  • publishing robot's links and joint state info
  • launching sensor drivers.

5.2 Run a localization estimation algorithm (Example: ROS Gmapping).

5.3 Follow all steps in the previous section noting that in step 4.2.1, set the "sim_flag" argument as False in tentabot_framework.launch file.

6. Contributors

Neset Unver Akmandor | [email protected]
Eric Dusel | [email protected]
Gary Lvov | [email protected] | www.garylvov.com
Hongyu Li | [email protected]

7. Credentials

Tentabot was developed at the RIVeR Lab, Northeastern University.

tentabot's People

Contributors

akmandor avatar lhy0807 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tentabot's Issues

Eigen3 Dependancy error

Can you share how did you manage to solve the "Eigen3" dependency error for "fcl"?

System Information:

  • CPU: Ryzen 5000 Series, AMD64
  • OS: Ubuntu 20.04
  • ROS Version: noetic

I go the error as follows:
image

Errors in creating a training environment

Hi, @akmandor
I admire your work very much, but when I use the tentabot_framework.launch file to train with Turtlebot3 configuration files, some errors have appeared, as follows:

ROS_MASTER_URI=http://localhost:11311
process[tentabot_server-9]: started with pid [12818]
tentabot_framework_launch:: __main__ -> Launched Tentabot Server!
tentabot_server::main -> world_frame_name: world
[ WARN] [1677553132.884454270]: couldn't register subscriber on topic [/]
tentabot_server::main -> n_goal: 1
Welcome to Tentabot Navigation Simulation! I hope you'll enjoy the experience...
Sorting tentacles by y-axis...
Tentabot::initialize -> Completed!
tentabot_framework_launch:: __main__ -> drl_service_flag: True
tentabot_framework_launch:: __main__ -> mode: training
started roslaunch server http://server-System-Product-Name:40839/

SUMMARY
========

PARAMETERS
 * /rosdistro: noetic
 * /rosversion: 1.15.15

NODES
  /
    tentabot_drl_training (tentabot/tentabot_drl_training.py)

ROS_MASTER_URI=http://localhost:11311
process[tentabot_drl_training-10]: started with pid [12837]
tentabot_framework_launch:: __main__ -> Launched Tentabot-DRL: training!
tentabot_drl_training::__main__ -> mode: training
tentabot_drl_training::__main__ -> deep_learning_algorithm: PPO
tentabot_drl_training::__main__ -> motion_planning_algorithm: tentabot_drl
tentabot_drl_training::__main__ -> observation_space_type: Tentabot_1DCNN_FC
tentabot_drl_training::__main__ -> world_name: training_garden_static_1
tentabot_drl_training::__main__ -> task_and_robot_environment_name: TurtleBot3tentabot_drl-v001
tentabot_drl_training::__main__ -> n_robot: 1
tentabot_drl_training::__main__ -> data_path: dataset/drl/testing/turtlebot3/
tentabot_drl_training::__main__ -> learning_rate: 0.0002
tentabot_drl_training::__main__ -> n_steps: 1000
tentabot_drl_training::__main__ -> batch_size: 50
tentabot_drl_training::__main__ -> ent_coef: 0.001
tentabot_drl_training::__main__ -> training_timesteps: 2000
tentabot_drl_training::__main__ -> max_episode_steps: 2000
tentabot_drl_training::__main__ -> initial_training_path: 
tentabot_drl_training::__main__ -> training_checkpoint_freq: 1000
tentabot_drl_training::__main__ -> plot_title: Learning Curve
tentabot_drl_training::__main__ -> plot_moving_average_window_size_timesteps: 20
tentabot_drl_training::__main__ -> plot_moving_average_window_size_episodes: 5
tentabot_drl_training::write_data -> Data is written in /home/server/workspace/tentabot_ws/src/tentabot/dataset/drl/testing/turtlebot3/20230228_105856_PPO_tentabot/training_log.csv
[WARN] [1677553136.405351, 6933.280000]: Env: TurtleBot3tentabot_drl-v001 will be imported
[WARN] [1677553136.406210, 6933.281000]: Something Went wrong in the register
Traceback (most recent call last):
  File "/home/server/workspace/tentabot_ws/src/tentabot/scripts/tentabot_drl/tentabot_drl_training.py", line 194, in <module>
    env = Monitor(env, data_folder_path)
  File "/home/server/python_env/tentabot/lib/python3.8/site-packages/stable_baselines3/common/monitor.py", line 47, in __init__
    header={"t_start": self.t_start, "env_id": env.spec and env.spec.id},
AttributeError: 'NoneType' object has no attribute 'spec'
[tentabot_drl_training-10] process has died [pid 12837, exit code 1, cmd /home/server/workspace/tentabot_ws/src/tentabot/scripts/tentabot_drl/tentabot_drl_training.py __name:=tentabot_drl_training __log:=/home/server/.ros/log/d18d61da-b713-11ed-9a76-d573bd68246a/tentabot_drl_training-10.log].
log file: /home/server/.ros/log/d18d61da-b713-11ed-9a76-d573bd68246a/tentabot_drl_training-10*.log
all processes on machine have died, roslaunch will exit

I wonder if this is caused by the gym version? Or is there a problem with my configuration file? Looking forward to your reply, thank you!

Test script for TEB algorithm

Hi @akmandor ,
I noticed that the TEB algorithm was used as a comparative experiment in this paper, so I would like to ask if the code includes a test script similar to the tentabot_DRL algorithm? It can automatically set the target points and save the navigation success rate, time, and path length. In fact, I haven't discovered it yet.
Thank you for your work and look forward to your reply. Thank you!

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.