This package provides a ROS node to facilitate safe traverse of an autonomous robot across a road. It was done as a bachelor's thesis at FEE CTU.
The main algorithm is based on a behavior-tree structure. This work does not include the detection of incoming vehicles that are provided by a different node.
Clone this repository into your catkin workspace.
git clone https://github.com/vlk-jan/road_crossing.git
For this package to work you need to install additional packages:
- Compass - provides the robots azimuth.
- GPS to path - previously part of gps-navigation package.
The package also requires additional libraries:
- BehaviorTree.CPP - c++ library containing the behavior-tree implementation we use.
- GeographicLib - c++ library for geographical conversions.
- Numpy - python library for numerical calculations.
- Overpy - python library for accesing the OSM overpass API.
- Shapely - python library for work with geometrical objects.
- UTM - python library for bidirectional UTM <-> WGS84 conversion.
Installing c++ libraries:
sudo apt-get install libgeographic-dev ros-$ROS_DISTRO-behaviortree-cpp-v3
Installing python libraries
pip install -r requirements.txt
This package can be simulated using the Gazebo simulator. The necessary information about the simulation environment, needed packages and more is available at the road_crossing_gazebo.
This package does not currently have any documentation. However, the text of my bachelor thesis is here, where I try to explain the code a bit.
- Short-term
- Create unit tests?
- Long-term
- Service for obtaining better place - possible need to rewrite road cost
- move_to_place weight map (point-cloud) creation & implementation
- Vehicle obtaining (from ROS node) message type & implementation
- Obtaining road info from real-world - using camera? - possibly different node, so just integration of the messages