Source:
- Top level ROS node:/src/cyborg_ros_navigation
- Required libraries: /src/navigation
- Required ROS node: /src/rosaria
Report:
- 2020, Lasse Gøncz
Navigation stack
Takes desired goal on topic move_base_simple/goal as input.
Publishes velocity commads on topic cmd/vel
Requires URDF file of robot model
Requires .yaml and .png file of the map
The overview of the system architecture is shown here:¨
- cyborg_controller: the main controller and manager of all other nodes
- part of behaviour module
- cyborg_behavior: the emotional system that decides what future states are attractive
- cyborg_eventscheduler: posts events like "go and charge" by monitoring the battery status or "go to kantine" during lunch time
- cyborg_primary_states
- Nodes handling actuators
- cyborg_navigation: High-level navigation, defines where to go in the map.
ros-arnl: low-level navigation stack(now using ROS navigation stack)
- cyborg_audio: everything related to making sounds on the speakers
- cyborg_visual: controls the LED-dome
- cyborg_navigation: High-level navigation, defines where to go in the map.
- rosaria: used by navigation and to retrieve status information from the Pioneer LX
Navigation Stack
A high-level overview of the system architecture in the navigation stack is shown below:
A more detailed architecture of the navigation stack is shown below:
Node descriptions:
- AMCL
- Responsible for localization
- Include an implementation of the Adaptive Monte Carlo Localization (AMCL) algorithm
- joint_state_publisher
- Takes a model of the Cyborg as input and outputs joint values.
- Used to generate correct coordinate transforms.
- robot_state_publisher
- Works in conjunction with joint_state_publisher.
- Takes joint values as input and output correct coordinate transforms between the frames on the Cyborg (base_link, left and right wheel, laser)
- RosAria
- Responsible for interfacing the robot controller on the Pioneer LX for navigation and to receive data from the sensors and odometry.
- map_server
- Takes a pre-generated static map as input and servers it to the move_base node.
- move_base
- The move_base package provides an implementation of an action (see the actionlib package) that, given a goal in the world, will attempt to reach it with a mobile base. The move_base node links together a global and local planner to accomplish its global navigation task.