safe_navigation_wiki - IRS-group/isr_tiago_docs GitHub Wiki

Tiago move_base_safe_server

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.

MBOT THINGS

Testing navigation during Setup:

  • 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

Adjusting parameters: move_base observation source

  • 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

Using during RoboCup tasks

Necessary:


  • 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" />

Preparing "Help me Carry":


  • 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
      1. Launch dwa
      2. Using rosrun mbot_rqt mbot_rqt set camera angle to '-55'
      3. Launch move_base_safe_server state machine: roslaunch mbot_actions run_action_servers.launch perception_required:=false manipulation_required:=false hri_required:=false
      4. To add pcl obstacles to costmap call the rosservive: rosservice call /mux_pcl_obstacles/select "topic: '/head_camera/depth_registered/points'"
      5. Using rviz visualize local costmap and check if the arm is being added as an obstacle
      6. Using mbot_rqt turn head around and ensure that the arm is never added to the costmap in any head orientation

Turning Off gazing behavior with pcl:

Not using pcl during the entire task:


  • 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>

Turning off during a task:


  • Change parameter /move_base_safe_server/use_gazing_behavior:

    rosparam set /move_base_safe_server/use_gazing_behavior false
    

Dynamic Reconfigure:

  • All possible configurations are in: mbot_actions/ros/config/mbot_dyn_reconfigure_params.yaml
⚠️ **GitHub.com Fallback** ⚠️