SRRC Wiki

Service Robotics Research Center
at Ulm University of Applied Sciences

User Tools

Site Tools


tutorials:flexible-navigation-stack-selenv:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tutorials:flexible-navigation-stack-selenv:start [2021/05/22 16:15]
Christian Schlegel [Update the System Parameters]
tutorials:flexible-navigation-stack-selenv:start [2021/05/22 17:58] (current)
Christian Schlegel [Update the System Parameters]
Line 36: Line 36:
 {{ tutorials:​flexible-navigation-stack-selenv:​S01_03_FNS_NewEnvironment_project_created.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S01_03_FNS_NewEnvironment_project_created.png | }}
  
-===== Perform ​the necessary ​Adjustments =====+===== Perform Adjustments =====
  
 ==== Update the System Parameters ==== ==== Update the System Parameters ====
  
-System ​parameters in ''​.*systemParam'' ​file specify the initial configuration of the components. ​Since the ComponentWebots has to load the new world, we specify this by updating ​the ''​WorldPath''​ parameter to ''​$SMART_ROOT_ACE/​repos/​DataRepository/​webots/​worlds/​RobotinoHome.wbt'' ​in ''​SystemWebotsRobotino3NavigationNew.systemParam''​ as shown below. This was the webots world which we have used in the mapping stage+The system ​parameters in the file ''​<<​project name>>​.systemParam''​ specify the initial configuration of the components. ​In this tutorial, our system project is named ''​SystemWebotsRobotino3NavigationNew''​ and thus, the file with the system parameters is named ''​SystemWebotsRobotino3NavigationNew.systemParam''​.  
 + 
 +In our system project in this tutorial, we use the Webots simulator and we need to tell Webots which world to use. As we will use the map created in tutorial [[tutorials:​flexible-navigation-stack-map:​start]],​ we need to use that world here again. Otherwise, obviously, the map would not match the world. Thus, as shown below, we update in the file ''​SystemWebotsRobotino3NavigationNew.systemParam'' ​the parameter ​''​WorldPath'' ​to ''​$SMART_ROOT_ACE/​repos/​DataRepository/​webots/​worlds/​RobotinoHome.wbt''​.
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S02_00_FNS_NewEnvironment_system_params.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S02_00_FNS_NewEnvironment_system_params.png | }}
  
-Since the navigation stack is same as the previous project ​we don't have to modify the other models in the system project i.e. Component Architecture,​ Deployment, Target, ​Deployment models.+Since //​SystemWebotsRobotino3NavigationNew//​ and //​SystemWebotsRobotino3Navigation//​ use the same flexible ​navigation stackwe don't have to modify the other models in the system project ​(i.e. Component Architecture,​ Deployment, Target, ​etc.).
  
-==== Update the Maps Correspond to the Environment ​====+==== Update the Maps ====
  
-We generated ​the map of the new environment(i.e. laserMap.pgm,​ laserMap.yaml) from the mapping stage [[tutorials:​flexible-navigation-stack-map:​start]]. ''​SmartAmcl'' ​requires this map to estimate the current position of the robot using laserodometry information. ​''​SmartMapperGridMap''​ uses this map and updates it with the current environment as perceived from the laserThe updated map from ''​SmartMapperGridMap''​ is used by ''​SmartPlannerBreadthFirstSearch''​ to find the free path way points between the goal and the current robot location.+We use the map generated in [[tutorials:​flexible-navigation-stack-map:​start]] ​(i.e. ''​laserMap.pgm'',​ ''​laserMap.yaml''​)
  
-The data used by components ​in a system project is placed in the project folder ''​SystemProjectName/​smartsoft/​src/''​. Each component has it own data folder. ​''​SmartAmcl'' ​uses data folder ''​SmartAmcl_data''​.+  * //​SmartAmcl//​ requires this map to estimate the current position of the robot using a laser ranger and odometry information. 
 +  * //​SmartMapperGridMap//​ uses this map and updates it via laser range scans. 
 +  * //​SmartPlannerBreadthFirstSearch//​ uses the updated map from //​SmartMapperGridMap//​ to find a free path to the goal. 
 + 
 +Data used by components ​of a system project is placed in the project folder ''​SystemProjectName/​smartsoft/​src/''​. Each component has it own data folder, e.g. //SmartAmcl// uses the data folder ''​SmartAmcl_data''​.
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S03_00_FNS_NewEnvironment_data_folders.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S03_00_FNS_NewEnvironment_data_folders.png | }}
  
-Delete ​the old maps i.e localization-map.pgm, localization-map.yaml ​from SmartAmcl_data and navigation-map.pgm,​ navigation-map.yaml ​from SmartMapperGridMap_data. ​You can delete them either ​from file explorer or from terminal with below commands.+We first delete ​the old maps which we do not use anymore in this system project: 
 +  * ''​SmartAmcl_data'':​ localizaion-map.pgm, localization-map.yaml 
 +  * ''​SmartMapperGridMap_data'': ​navigation-map.pgm,​ navigation-map.yaml 
 +You can delete them either ​via the file explorer or via a terminal with below commands:
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S03_01_FNS_NewEnvironment_remove_old_data.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S03_01_FNS_NewEnvironment_remove_old_data.png | }}
  
-Copy ''​laserMap.pgm''​ into SmartAmcl_data and rename it as ''​localization-map.pgm''​. Copy ''​laserMap.yaml''​ into SmartAmcl_data and rename it as ''​localization-map.yaml''​Now open the ''​localization-map.yaml'' ​file and change name of the image in line 3 from ''​laserMap-pgm''​ to ''​localization-map.pgm''​. ​Now ''​localization-map.yaml''​ looks as below:+We now need to copy the maps into the corresponding folders: 
 +  * copy ''​laserMap.pgm''​ into the folder ''​SmartAmcl_data'' ​and rename it to ''​localization-map.pgm''​ 
 +  * copy ''​laserMap.yaml''​ into the folder ''​SmartAmcl_data'' ​and rename it to ''​localization-map.yaml''​ 
 + 
 +Now open the file ''​localization-map.yaml''​ and change ​the name of the image in line 3 from ''​laserMap-pgm''​ to ''​localization-map.pgm''​. ​The file ''​localization-map.yaml'' ​now looks as shown below:
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S03_02_FNS_NewEnvironment_updated_amcl_yaml.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S03_02_FNS_NewEnvironment_updated_amcl_yaml.png | }}
  
-Copy ''​laserMap.pgm''​ into SmartMapperGridMap_data ​folder and rename it as ''​navigation-map.pgm''​. Copy ''​laserMap.yaml''​ into SmartMapperGridMap_data ​folder and rename it as ''​navigation-map.yaml''​Now open the ''​navigation-map.yaml'' ​file and change name of the image in line 3 from ''​laserMap-pgm''​ to ''​navigation-map.pgm''​. ​Now ''​navigation-map.yaml''​ looks as below:+  * copy ''​laserMap.pgm''​ into the folder ​''​SmartMapperGridMap_data'' ​and rename it to ''​navigation-map.pgm''​ 
 +  * copy ''​laserMap.yaml''​ into the folder ​''​SmartMapperGridMap_data'' ​and rename it to ''​navigation-map.yaml''​ 
 + 
 +Now open the file ''​navigation-map.yaml''​ and change ​the name of the image in line 3 from ''​laserMap-pgm''​ to ''​navigation-map.pgm''​. ​The file ''​navigation-map.yaml'' ​now looks as shown below:
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S03_03_FNS_NewEnvironment_updated_mapper_yaml.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S03_03_FNS_NewEnvironment_updated_mapper_yaml.png | }}
  
-Note: In most scenarios, same map is used in both localization (i.e. localization-map.pgm) and path planning (i.e. navigation-map.pgm). However, in some cases we want to restrict the robot from entering some areas of the environment, ​these areas in the map are modified as occupied ​from free space and this modified ​map is used path planning.+**Note:** In most scenarios, ​the same map is used for both, the robot localization (i.e. ''​localization-map.pgm''​) and the robot path planning (i.e. ''​navigation-map.pgm''​). However, in some cases we want to block areas in the environment ​so that the robot does not enter them. In this case, the ''​navigation-map.pgm''​ (used for path planning) is different ​from the ''​localization-map.pgm''​ (used for localization). We modify the ''​navigation-map.pgm''​ such that grid cells belonging to forbidden areas are changed from //free// to //​occupied//​. 
 + 
 +==== Update the CDL-Lookup Files ==== 
 + 
 +The //​SmartCdlServer//​ (motion execution) requires CDL-lookup files to calculate the motion commands to drive the robot towards intermediate waypoints as received from the path planner. CDL-lookup files are generated using the shape, the kinematics and the dynamics of the robot
  
-==== Update CDL-Lookup Files ====+Since ''​SystemWebotsRobotino3NavigationNew''​ and ''​SystemWebotsRobotino3Navigation''​ use the same robot (a robotino robot), we don't have to update the cdl-lookup files. ​
  
-''​SmartCdlServer''​ requires CDL-lookup files to calculate ​the motion commands ​to drive the robot towards intermediate waypoints as received from the path planner. CDL-lookup files are generated using shape, kinematics and dynamics ​of the robot. CDL-lookup files improve the efficiency by reducing the number of calculations required to generate the motion commands.+**However, this step is required at the moment due to a bug in the copying ​of the project.**
  
-Since SystemWebotsRobotino3NavigationNew and SystemWebotsRobotino3Navigation use same robot i.e robotino, we don't have to update the cdl-lookup files. However, this step is required due to a bug in the copying of the project. During the copying ​the CDL-lookup binary files effected. So we delete all files from the folder ''​$SMART_ROOT_ACE/​repos/​SystemRepository/​SystemWebotsRobotino3NavigationNew/​smartsoft/​src/​SmartCdlServer_data/​data/​lookup-files''​. Copy all files from folder ''​$SMART_ROOT_ACE/​repos/​SystemRepository/​SystemWebotsRobotino3NavigationNew/​smartsoft/​src/​SmartCdlServer_data/​data/​lookup-files''​ to ''​$SMART_ROOT_ACE/​repos/​SystemRepository/​SystemWebotsRobotino3NavigationNew/​smartsoft/​src/​SmartCdlServer_data/​data/​lookup-files''​.+Copying ​the system ​project ​has an effect on the CDL-lookup binary files. So we need to do the following steps: 
 +  * delete all files from the folder ''​$SMART_ROOT_ACE/​repos/​SystemRepository/​SystemWebotsRobotino3NavigationNew/​smartsoft/​src/​SmartCdlServer_data/​data/​lookup-files''​ 
 +  * copy all files from folder ''​$SMART_ROOT_ACE/​repos/​SystemRepository/​SystemWebotsRobotino3NavigationNew/​smartsoft/​src/​SmartCdlServer_data/​data/​lookup-files''​ to ''​$SMART_ROOT_ACE/​repos/​SystemRepository/​SystemWebotsRobotino3NavigationNew/​smartsoft/​src/​SmartCdlServer_data/​data/​lookup-files''​
  
-Note that if we want to use another robot e.g. Pioneer3Dx, Tiago, we must use the corresponding lookup files and update the names of the lookup files in ''​SmartCdlServer''​ parameters in ''​*.systemParameters''​ file.+Note that if we want to use another robot such as a Pioneer3DX, Tiago, etc., we must use the corresponding ​CDL-lookup files and we need to update the names of the CDL-lookup files in the ''​SmartCdlServer''​ parameters in the corresponding ​''​*.systemParameters''​ file.
  
-Now all the changes required in a system project for running the flexible navigation stack with a new environment are done. Now we can deploy and execute the system. The following section describes how to deploy and execute the system. These steps same for all the system projects ​as you have seen in the previous tutorials.+Now all the changes required in a system project for running the flexible navigation stack in a new environment are done. Now we can deploy and execute the system. The following section describes how to deploy and execute the system. These steps are the same for all the system projects ​and you have seen them already ​in the previous tutorials.
  
 ==== Deploying and Executing the System ==== ==== Deploying and Executing the System ====
  
-**Step ​5.a:** Right click on the project → Run Code-Generation. This step is required if there is any change in models of the project(i.e any file inside the model folder). In this tutorial, we modified the System ​parameters, ​code-generation generates the updated configuration files(i.e *.ini files). You can look at the generated configuration files in ''​smartsoft/​src-gen/​params''​ and ''​smartsoft/​src-gen/​combined-ini-files'' ​folders.+**Step ​1:** Right click on //project// → //Run Code-Generation//. This step is required if there is any change in models of the project (i.eany file inside the model folder). In this tutorial, we modified the system ​parameters ​and thuswe need to do this step to generate ​updated configuration files (i.e *.ini files). You can look at the generated configuration files in the folders ​''​smartsoft/​src-gen/​params''​ and ''​smartsoft/​src-gen/​combined-ini-files''​.
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S05_00_FNS_NewEnvironment_code_generation.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S05_00_FNS_NewEnvironment_code_generation.png | }}
  
-Verify that there are no errors during the code generation by looking at the Console ​terminal: ​+Verify that there are no errors during the code generation by looking at the console ​terminal: ​
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S05_01_FNS_NewEnvironment_verify_code_generation.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S05_01_FNS_NewEnvironment_verify_code_generation.png | }}
  
-**Step ​5.b:** We now deploy the system by clicking the Deployment Action from the right-click menu of the project: ​+**Step ​2:** We now deploy the system by clicking the //Deployment Action// from the right-click menu of the project: ​
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S05_02_FNS_NewEnvironment_deployment.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S05_02_FNS_NewEnvironment_deployment.png | }}
  
-It depends on your configuration whether you are being asked for credentials of the configured login account. Finally, you see the following pop-up window which tells you that the deployment was successful:+It depends on your configuration whether you are asked for credentials of the configured login account. Finally, you see the following pop-up window which tells you that the deployment was successful:
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S05_03_FNS_NewEnvironment_deployment_popup.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S05_03_FNS_NewEnvironment_deployment_popup.png | }}
  
-**Step ​5.c:** You can now start your system by clicking Yes. A terminal window will open and show the scenario control menu. Choose menu-start to start the scenario. Further terminals open automatically (one for each component and one additional window for the naming service). Note that they may not be visible initially in case they overlap. Choose menu-stop to stop the scenario. ​+**Step ​3:** You can now start your system by clicking ​//Yes//. A terminal window will open and show the scenario control menu. Choose ​//menu-start// to start the scenario. Further terminals open automatically (one for each component and one additional window for the naming service). Note that they may not be visible initially in case they overlap. Choose ​//menu-stop// to stop the scenario. ​
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S05_04_FNS_NewEnvironment_scenario_control_window.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S05_04_FNS_NewEnvironment_scenario_control_window.png | }}
  
-**Step ​5.d:** Wait until the webots simulator is up and all the components ​are started running. ​ Look for the terminal which contains the ComponentTCLSequencer.+**Step ​4:** Wait until the webots simulator is up and all the components started ​and are running. Look for the terminal ​window ​which contains the //ComponentTCLSequencer//.
  
 {{ tutorials:​flexible-navigation-stack-selenv:​S05_05_FNS_NewEnvironment_scenario_running.png | }} {{ tutorials:​flexible-navigation-stack-selenv:​S05_05_FNS_NewEnvironment_scenario_running.png | }}
  
-In the menu, select ​"5 - Approach location" ​and enter one of the offered names for locations.+In the menu, select ​//5 - Approach location// and enter one of the offered names for locations.
  
 Now, the robot navigates to this destination and stops there. Now, the robot navigates to this destination and stops there.
tutorials/flexible-navigation-stack-selenv/start.1621692942.txt.gz · Last modified: 2021/05/22 16:15 by Christian Schlegel