safe_navigation_wiki - IRS-group/isr_tiago_docs GitHub Wiki
This servers is a wrapper of move base with aditional features. It not only sends goals to move base, but it can also change the movement configuration so the robot moves faster, slower, only forward or back and forth, as well as using the RGB-D camera for tiny obstacle avoidance or not.
For this:
- move base in Tiago was changed so that a topic "/scan_pcl" is also added the costmap;
- a node runs in U20 to convert the camera pointcloud to LaserScan. Run:
roslaunch navigation rgbd_cloud_laser.launch");
- In U18, a node to control whether or not pcl obstacle avoidance is used. Run in U18:
roslaunch pcl_obstacle_avoidance_topic_mux pcl_obstacle_avoidance_mux.launch
Also launch the move_base_safe_server node by running: TODO: TEST MOVE BASE SAFE SERVER IN THE ROBOT AND ADD A SINGLE LAUNCH FILE IN U18.
-
Launch navigation:
roslaunch mbot_2dnav 2dnav_dwa.launch costmap_type:=costmap_common_params_with_pcl
-
Launch move_base_safe_server state machine:
roslaunch mbot_actions run_action_servers.launch perception_required:=false manipulation_required:=false hri_required:=false
-
Launch mir_move_base_safe:
roslaunch mir_move_base_safe move_base.launch
-
Use the mbot GUI to navigate in the testbed:
rosrun mbot_rqt mbot_rqt
-
Use rviz to visualize the local costmap before and during navigation and check if any parameters need tunning by navigating in clean areas and later putting small obstacles and tables on the way (e.g.)
- if before navigation there are already wrong obstacles
- visualize the pcl in rviz and check the camera calibration
- if the calibration is good, try increasing the parameter min_obstacle_height
- if during navigation it appears obstacles in front of the robot:
- try increasing the parameter min_obstacle_height, this noise is probably from the shaking of the camera
- if before navigation there are already wrong obstacles
-
mbot_2dnav/ros/config/dwa/costmap_common_params_with_pcl.yaml
-
observation_persistence (How long to keep each sensor reading in seconds)
- current value: 6.0
- This high value deals with the problem of mbot looking away from the obstacle
- Decrease this value in case mbot is getting stuck a lot because of this source
-
min_obstacle_height (The minimum height in meters of a sensor reading considered valid)
- current value: 0.06
- This value deals with noise deals with noise from the pcl and shaking of the camera during navigation
- Decrease this value in case it's not detecting very small obstacles. Attention because setting negative values detects the floor as an obstacle
-
footprint_clearing_enabled (If true, the robot footprint will clear the space in which it travels.)
- current value: false
- This value deals with the fact of clearing the pcl obstacle when the robot gets too close to it
- Set to true only if mbot is having trouble navigating because of pcl obstacles
- More parameters and info see: Ros wiki - obstacles and Navigation Tuning Guide
-
observation_persistence (How long to keep each sensor reading in seconds)
- Navigation (the arg costmap_type by default uses pcl)
<include file="$(find mbot_2dnav)/ros/launch/2dnav_dwa.launch">
<arg name="costmap_type" value="costmap_common_params_with_pcl" />
</include>
- Move base safe server
<include file="$(find mbot_actions)/ros/launch/run_action_servers.launch" />
- Mir move base safe server
<include file="$(find mir_move_base_safe)/ros/launch/move_base.launch" />
-
Pay Attention to the Arm Position when carrying bags:
- Choose an arm position not seen by the head pcl
-
Test the arm position with a bag
- Launch
dwa
- Using
rosrun mbot_rqt mbot_rqt
set camera angle to '-55' - Launch move_base_safe_server state machine:
roslaunch mbot_actions run_action_servers.launch perception_required:=false manipulation_required:=false hri_required:=false
- To add pcl obstacles to costmap call the rosservive:
rosservice call /mux_pcl_obstacles/select "topic: '/head_camera/depth_registered/points'"
- Using
rviz
visualize local costmap and check if the arm is being added as an obstacle - Using
mbot_rqt
turn head around and ensure that the arm is never added to the costmap in any head orientation
- Launch
- When using move base safe server:
<include file="$(find mbot_actions)/ros/launch/run_action_servers.launch">
<arg name="use_gazing_behavior" value="false" />
</include >
- Although is not necessary you can also change Navigation arg:
<include file="$(find mbot_2dnav)/ros/launch/2dnav_dwa.launch">
<arg name="costmap_type" value="costmap_common_params" />
</include>
-
Change parameter /move_base_safe_server/use_gazing_behavior:
rosparam set /move_base_safe_server/use_gazing_behavior false
- All possible configurations are in:
mbot_actions/ros/config/mbot_dyn_reconfigure_params.yaml