Giter Site home page Giter Site logo

cogsys-tuebingen / gerona Goto Github PK

View Code? Open in Web Editor NEW
314.0 21.0 128.0 6.75 MB

GeRoNa (Generic Robot Navigation) is a modular robot navigation framework, that bundles path planning and path following (including obstacle detection) and manages communication between the individual modules. It is designed to be easily extensible for new tasks and robot models.

Home Page: http://www.ra.cs.uni-tuebingen.de/forschung/gerona/

License: BSD 3-Clause "New" or "Revised" License

CMake 2.83% C++ 94.42% Python 1.96% Shell 0.03% C 0.62% Lua 0.14%

gerona's Introduction

GeRoNa: Generic Robot Navigation

continuous_integration

This project contains a set of ROS packages which provide a navigation suite, including path planning on a given map, controlling of the robot to follow this path and obstacle avoidance while driving.

The packages are build with the goal to get a modular, easily extensible framework, where new modules (e.g. kinematic model of a new robot, new obstacle avoidance algorithms, etc) can be added with minimal effort.

The following video demonstrates various supported robot kinematics:

GeRoNa: Generic Robot Navigation Video

Installation

First, install the dependencies. For example, from your workspace root directory:

cd src
git clone https://github.com/cogsys-tuebingen/cslibs_path_planning
git clone https://github.com/cogsys-tuebingen/cslibs_navigation_utilities
cd ..

rosdep install --from-paths -i -r -y src

Then you can either use catkin_make, catkin_make_isolated or catkin build to build the software.

Quick Start

This is only a really quick "quick start" guide. For more detailed explanations, see below.

Send goals from some ROS node

To start the complete navigation project as well as nodes for SLAM and obstacle detection (using 2d laser), simply run

roslaunch navigation_launch navigation.launch

Now everything is set up and your node can connect to the navigate_to_goal action server and send goals.

Set goals manually using Rviz

If you want to set goal poses manually using Rviz (e.g. for testing or demonstration purposes), run

roslaunch navigation_launch rviz_controlled.launch

Select robot controller/model

By default a controller for car-like robots is used (ackermann_purepursuit). To change this, simply set the environment variable ROBOT_CONTROLLER with the name of the contproller you want to use. For example, to use the omni-drive orthexp controller:

export ROBOT_CONTROLLER=omni_orthexp
roslaunch navigation_launch navigation.launch

The controller can also be set via the ROS parameter

rosparam set path_follower/controller_type omni_orthexp

More Information

Please take a look at the example launch files for how to customize parameters in your launch files.

For more information please refer to the wiki.

gerona's People

Contributors

betwo avatar daejiv avatar doge-of-the-day avatar eka-bohlmann avatar gohus avatar hackbrett avatar jquadrat avatar lerolynn 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gerona's Issues

Use local planner in follower only example launch configuration

As mentioned in #21 , specifying a path that points away from the ego-pose in the "follower only" example results in the robot not following the path at all.
This is because the global_planner does not respect the robot's kinematic.

Acceptance criteria:

  • Example is enhanced to use the local planner during path following
  • The readme files are updated with a hint to this problem

Angular_velocity variable always at 0 for HBZ controller

Hi,

First of all, thank you for this great work. I am starting to use the framework to control robots that we use here in Norlab of Laval University, Canada. I love the work you are doing!

I managed to get the HBZ controller working on one of our other robots in gazebo. I only have a small problem. The angular_vel variable, which defines the measured angular velocity of the robot always remains at 0 in my lab. I print it in the robotcontroller_kinematic_HBZ.cpp file and it never changes. This seems to have an impact on the output. Is the problem only located on my computer? In this case, maybe I have broken the code by using it.

Thanks in advance for your help!
Dominic

Help using the package with Hector SLAM

Hi,
I'm trying to use gerona with hector slam in real time. The idea is is to use the 2d nav goal in rviz to provide waypoints in an unknown map to move the robot while hector slam maps the surrounding and provides localization.
Is that approach possible? Any advises would be welcome.

Thanks so much,
Michael

Problems in simulation

Hi, thanks for your projects. I was just trying to test the navigation node in the stage and got error like this:
[ERROR] [1574837186.769389745, 1.000000000]: error transforming the obstacle cloud from base_link to map: the transformation between map and base_link does not exist.
[ WARN] [1574837187.368732183, 1.600000000]: cannot lookup relative transform from map to base_link at time 0.000000000. Using latest transform
[ WARN] [1574837187.468725955, 1.700000000]: cannot lookup relative transform from map to base_link at time 0.000000000. Using latest transform
[ WARN] [1574837187.670250319, 1.900000000]: cannot lookup relative transform from map to base_link at time 0.000000000. Using latest transform
[ WARN] [1574837187.770237280, 2.000000000]: cannot lookup relative transform from map to base_link at time 0.000000000. Using latest transform
[ WARN] [1574837187.870323464, 2.100000000]: cannot lookup relative transform from map to base_link at time 0.000000000. Using latest transform

屏幕截图 2019-11-27 14:51:33
屏幕截图 2019-11-27 14:52:09
Can you give me some advice how to solve this problem.Thank you!

Provide easy examples for testing in Gazebo and Stage

As a user of gerona, I want to quickly and easily test the framework.
For that I need single launch files to start a simulation, gerona and RViz.

Acceptance Criteria:

  • a launch file exists to run a stage simulation, gerona and RViz.
  • a launch file exists to run a gazebo simulation, gerona and RViz.

Parameter missing which is mentioned in the Wiki

Hello,

While using the differential orth_exp controller, the parameter to set the maximum angular velocity which is mentioned in the Wiki is not available. The launch file has no mention of it as well.

pure rotation motion

hii,
I run successfully the concept API (follow_path_example.py) to the actual differential robot scenario.

This API only considers the status of my planning position, and it seems that the rotation angle does not affect the control. (position and rotation from the nav_path)

I had some problems, when the rotation angle is too large and my robot not allow reverse motion that resulting in uncontrollable situations (robot cannot turn at the right Angle).

I want to use pure rotational motion to solve this problem
Is there any way to using command in the API to make the robot do pure rotation?

Thank you for your kind assistance.

odom2tf failing

Hello,

Thanks for this project.

System: ubuntu 16.x, ros kinetic

/home/michael/gerona_ws/src/gerona/tools/odom2tf/src/odom2tf_node.cpp: In function ‘int main(int, char**)’:
/home/michael/gerona_ws/src/gerona/tools/odom2tf/src/odom2tf_node.cpp:11:15: error: ISO C++ forbids declaration of ‘odom_frame’ with no type [-fpermissive]
const auto& odom_frame = p_nh.paramstd::string("odom_frame", "odom");
^
/home/michael/gerona_ws/src/gerona/tools/odom2tf/src/odom2tf_node.cpp:11:51: error: invalid initialization of reference of type ‘const int&’ from expression of type ‘std::__cxx11::basic_string’
const auto& odom_frame = p_nh.paramstd::string("odom_frame", "odom");
^
/home/michael/gerona_ws/src/gerona/tools/odom2tf/src/odom2tf_node.cpp:12:15: error: ISO C++ forbids declaration of ‘base_link_frame’ with no type [-fpermissive]
const auto& base_link_frame = p_nh.paramstd::string("base_link_frame", "bas
^
/home/michael/gerona_ws/src/gerona/tools/odom2tf/src/odom2tf_node.cpp:12:56: error: invalid initialization of reference of type ‘const int&’ from expression of type ‘std::_cxx11::basic_string’
const auto& base_link_frame = p_nh.paramstd::string("base_link_frame", "bas
^
/home/michael/gerona_ws/src/gerona/tools/odom2tf/src/odom2tf_node.cpp:28:7: warning: lambda expressions only available with -std=c++11 or -std=gnu++11
};
^
/home/michael/gerona_ws/src/gerona/tools/odom2tf/src/odom2tf_node.cpp:28:7: error: conversion from ‘main(int, char**)::<lambda(const ConstPtr&)>’ to non-scalar type ‘boost::function<void(const boost::shared_ptr<const nav_msgs::Odometry
<std::allocator > >&)>’ requested
/home/michael/gerona_ws/src/gerona/tools/odom2tf/src/odom2tf_node.cpp:30:8: error: ‘sub’ does not name a type
auto sub = nh.subscribe<nav_msgs::Odometry>("odom", 10, callback);
^
[ 69%] Building CXX object gerona/path_planner/CMakeFiles/course_planner_node.dir/src/course_planner/course/node.cpp.o
[ 70%] Building CXX object gerona/path_planner/CMakeFiles/course_planner_node.dir/src/course_planner/course/course_map.cpp.o
gerona/tools/odom2tf/CMakeFiles/odom2tf_node.dir/build.make:62: recipe for target 'gerona/tools/odom2tf/CMakeFiles/odom2tf_node.dir/src/odom2tf_node.cpp.o' failed
make[2]: *** [gerona/tools/odom2tf/CMakeFiles/odom2tf_node.dir/src/odom2tf_node.cpp.o] Error 1
CMakeFiles/Makefile2:3080: recipe for target 'gerona/tools/odom2tf/CMakeFiles/odom2tf_node.dir/all' failed
make[1]: *** [gerona/tools/odom2tf/CMakeFiles/odom2tf_node.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

Can you please help me figure out this error building this node?

Thanks,
Michael

*** No rule to make target 'opencv_calib3d-NOTFOUND'

make[2]: *** No rule to make target 'opencv_calib3d-NOTFOUND', needed by '/home/zlt/Jordan/devel/lib/libpath_follower.so'. Stop.
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:6431: recipe for target 'gerona/path_follower/CMakeFiles/path_follower.dir/all' failed
make[1]: *** [gerona/path_follower/CMakeFiles/path_follower.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j12 -l12" failed

HBZ controller not working in backwards

Hello ! And thanks in advance for this navigation suite.

I have tested several controllers and found that when using HBZ controller and the plan is backwards, the robot behaves incorrectly. It keeps oscillating and moving counter-sense from the initial point of the path.

When planning forwards works fine, and the vehicle is differential driven.

Note: robot must perform a 180 degree rotation initially when driving backwards, dont know if that can influence considering clamp limits.

Regards!
Mario

undefined reference to "alglib"

/home/ruanpe/project/ros/GeRoNa/devel/lib/libpath_follower.so:undefined reference to ‘alglib::spline1dconvdiff2cubic(alglib::real_1d_array const&, alglib::real_1d_array const&, alglib::real_1d_array const&, alglib::real_1d_array&, alglib::real_1d_array&, alglib::real_1d_array&, alglib::xparams)’
/home/ruanpe/project/ros/GeRoNa/devel/lib/libpath_follower.so:undefined reference to‘alglib::real_1d_array::real_1d_array()’
/home/ruanpe/project/ros/GeRoNa/devel/lib/libpath_follower.so:undefined reference to‘alglib::real_1d_array::operator
/home/ruanpe/project/ros/GeRoNa/devel/lib/libpath_follower.so:undefined reference to‘alglib::real_1d_array::~real_1d_array()’
/home/ruanpe/project/ros/GeRoNa/devel/lib/libpath_follower.so:undefined reference to‘alglib::real_1d_array::setcontent(long, double const*)’
/home/ruanpe/project/ros/GeRoNa/devel/lib/libpath_follower.so:undefined reference to ‘alglib::xdefault’ collect2: error: ld returned 1 exit status
gerona/path_follower/CMakeFiles/path_follower_node.dir/build.make:713: recipe for target '/home/ruanpe/project/ros/GeRoNa/devel/lib/path_follower/path_follower_node' failed
make[2]: *** [/home/ruanpe/project/ros/GeRoNa/devel/lib/path_follower/path_follower_node] Error 1
CMakeFiles/Makefile2:6757: recipe for target 'gerona/path_follower/CMakeFiles/path_follower_node.dir/all' failed
make[1]: *** [gerona/path_follower/CMakeFiles/path_follower_node.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4 -l4" failed

how to make a differential drive mobile robot follow a curved path?

hii, My current setup is a skid-steer drive mobile base which takes command velocity.
I got robot pose and path( collision free trajectory ), and now i need a path-following controller ( cml_vel) to make the skid-steer robot to follow the concern trajectory
So it there any good example or module that i can use directly?
It looks like this description, but I don't understand the detailed operation

image

Broken link/private link - from https://github.com/cogsys-tuebingen/gerona to https://gitlab.cs.uni-tuebingen.de/apps/navigation/wikis/home

Is there some demos can running offline?

hi, thanks for you project.I want to ask is there some demo that can be used offline in rviz ,not in a real robot.By the way, there are some bugs in path_planner will make catkin_make error.

report bug in my computer

Hi, I modify sbpl_planner_node.cpp line46 from :
return type == path_msgs::PlanPathGoal::GOAL_TYPE_POSE;
to
return type == path_msgs::Goal::GOAL_TYPE_POSE;
and when I install ompl-app, it took some long time, must the ompl-app be used?How about using just ompl instead?
my system is Ubuntu 16.04 ROS Kinetic.
By the way, could you give some easy ways to test,like teb_local_planner_tutorial or use rosbag to supply the needed topics, gazebo always has some questions for me.
Thx for your job, I am learning about the code, but till now I can't run it or see some results~

Gerona on UAV

Is possible to use this package on a UAV with a PX4 controller?

gerona package fail to build on Jetson Tx2 because gcc version on arm platform doesn't include mm_malloc.h

Is there a work around for this? Is there a way i could copy this to a gcc path or something?

home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/cv_aligned_mat.h:5:23: fatal error: mm_malloc.h: No such file or directory
compilation terminated.
gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/build.make:62: recipe for target 'gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/src/wheelmodel.cpp.o' failed
make[2]: *** [gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/src/wheelmodel.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 0%] Building CXX object gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/src/robotmodel.cpp.o
[ 0%] Built target nav_msgs_generate_messages_lisp
In file included from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/wheeldescriptor.h:4:0,
from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/wheelmodel.h:4,
from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/robotmodel.h:4,
from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/poseestimator.h:6,
from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/src/poseestimator.cpp:1:
/home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/cv_aligned_mat.h:5:23: fatal error: mm_malloc.h: No such file or directory
compilation terminated.
gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/build.make:86: recipe for target 'gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/src/poseestimator.cpp.o' failed
make[2]: *** [gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/src/poseestimator.cpp.o] Error 1
In file included from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/chassisdescriptor.h:4:0,
from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/chassismodel.h:5,
from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/src/chassismodel.cpp:1:
/home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/cv_aligned_mat.h:5:23: fatal error: mm_malloc.h: No such file or directory
compilation terminated.
gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/build.make:134: recipe for target 'gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/src/chassismodel.cpp.o' failed
make[2]: *** [gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/src/chassismodel.cpp.o] Error 1
In file included from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/wheeldescriptor.h:4:0,
from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/wheelmodel.h:4,
from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/robotmodel.h:4,
from /home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/src/robotmodel.cpp:1:
/home/nvidia/catkin_ws/src/gerona/tools/model_based_planner/include/model_based_planner/cv_aligned_mat.h:5:23: fatal error: mm_malloc.h: No such file or directory
compilation terminated.
gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/build.make:158: recipe for target 'gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/src/robotmodel.cpp.o' failed
make[2]: *** [gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/src/robotmodel.cpp.o] Error 1
CMakeFiles/Makefile2:551: recipe for target 'gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/all' failed
make[1]: *** [gerona/tools/model_based_planner/CMakeFiles/model_based_planner.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 0%] Built target geometry_msgs_generate_messages_lisp
[ 0%] Built target _path_msgs_generate_messages_check_deps_FollowerOptions
[ 0%] Built target _path_msgs_generate_messages_check_deps_Goal
[ 0%] Built target _path_msgs_generate_messages_check_deps_NavigateToGoalFeedback
[ 0%] Built target _path_msgs_generate_messages_check_deps_PlanPathGoal
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j6 -l6" failed

Comparison with move_base

Hi. This looks cool!
It would be great if you'd add a brief summary of comparison of this and move_base.

license in case of modification

The license doesn't say anything about the case of modification, redistribution (except that the license has to be included), commercial use

path follower with multiple waypoints

Hi
I have been testing your implementation and it works well with a single navigation goal given to navigate_to_goal actionlib. If I call the actionlib for each waypoints that I have in my path it creates delay between the waypoints.

Can we feed all the waypoints into your pathfollower node so that it smoothly (without delay) run through them? If possible that would be nice to have an example of it.

Thanks
Mert

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.