bay

Issues Created

  • #9: Include timer GUI inside the amazon warehouse web template
  • #10: Make the amazon_warehouse pallets aligned in CustomRobots repository
  • #11: Explore the application of SLAM Toolbox in the warehouse robot’s navigation stack
  • #12: Fix waypoint navigation issue in Amazon warehouse exercise code (Debug amazon_robot_controller)
  • #13: Fix issue in Amazon warehouse exercise code that requires us to press Pause and Resume in order to begin the costmaps
  • #14: Construct a data structure to store destination and source locations of pallets, and state of the robot as well as check for completion of the deliveries of pallets

Progress on the Issues

Solving the robot_controller error

Error log
[robot_controller-13] [ERROR] [1623763205.850077317] []: Caught exception in callback for transition 10
[robot_controller-13] [ERROR] [1623763205.850086385] []: Original error: Possible typo? In the XML, you tried to remap port "goal" in node [NavigateToPose / NavigateToPose], but the manifest of this node does not contain a port with this name.
[robot_controller-13] [WARN] [1623763205.850104774] []: Error occurred while doing error handling.
[robot_controller-13] [FATAL] [1623763205.850112298] [robot_controller]: Lifecycle node robot_controller does not have error state implemented
Helpful References
Solution
  1. Added following plugin_libs to nav2_params_with_control.yaml (under amazon_robot_bringup):
         + nav2_compute_path_to_pose_action_bt_node
         + nav2_follow_path_action_bt_node
    
  2. Modifications in the BT navigator follow_waypoints_and_load.xml (under amazon_robot_controller):

    Originally —

             <ReactiveSequence>
                <GetNextGoal goals="{goals}" goal="{goal}" goal_achieved="{goal_achieved}"/>
                <NavigateToPose goal="{goal}" server_name="navigate_to_pose" server_timeout="10"/>
                <LoadPallet load_queue="{load_queue}"/>
     <!--          <Wait wait_duration="5"/>-->
                <SetBlackboard output_key="goal_achieved" value="true"/>
             </ReactiveSequence>
    

    Changed to —

             <ReactiveSequence>
               <GetNextGoal goals="{goals}" goal="{goal}" goal_achieved="{goal_achieved}"/>
               <ComputePathToPose goal="{goal}" path="{path}"/>
               <FollowPath path="{path}"/>
               <LoadPallet load_queue="{load_queue}"/>
               <SetBlackboard output_key="goal_achieved" value="true"/>
             </ReactiveSequence>
    

Solved!!

Incorporating SLAM

Need for SLAM

The pallets would be moved from original location. With a static map, we have immovable obstacles at those locations. This will impede efficiency of nav2’s planning

Potential solution

LifeLong Mapping is a feature of SLAM Toolbox which allows us to input an existing map (stored as a pose-graph instead of pgm file) and it continues to update the map from there

Caution

This doesn’t work together with AMCL localization. Need to break down all changes required in the amazon packages.

Progress
  • For starters, check how navigation_launch.py under nav2_bringup and online_async_launch.py under slam_toolbox work together
  • I ran the example SLAM Toolbox demo with TurtleBot3 that was given
  • I am trying to achieve a demo of lifelong mapping with TurtleBot3 first