-
Notifications
You must be signed in to change notification settings - Fork 5
Navigation
Navigation is still in the process of being interconnected to the main engine and the base control unit.
- Hardware Requirements
- Tech used: ROS, Arduino, RpLidar A1, BNO055, Python, C++
Navigation has four main modules:
- Nav Action Server: in charge of executing different navigation actions.
- Navigation Stack: ROS packages that provide 2D navigation services.
- Base Control: module in charge of calculating odometry and moving the robot's base.
- Map Contextualizer: Preprocessing module that executes goal saving, place tagging and general space characterization for further navigation operations made by the action server.
For frame transforms between sensor streams, base frame and odometry we use a URDF robot model powered by the Robot State Publisher package.
We decided to use Hector Slam's mapping package because it can provide a map accurately without the need of odometry.
To start mapping run:
roslaunch nav_main launch_mapping.launch
The robot will run following the ROS navigation stack guide. At the moment, we have this core transform tree implemented:
The Navigation Action Server is in charge of providing the /goal
topic, according to the action requested by the Main Engine.
Goals are generated with the preprocessing of the map, by the Map Contextualizer Module.
Collision avoidance is a problem we've attacked by increasing the inflation radius of the robot in the Nav Stack params; nevertheless, smarter choices should be made to create an automatic recovery behavior system that knows how to act accordingly.