ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

jeremy33's profile - activity

2020-07-14 04:15:34 -0500 received badge  Self-Learner (source)
2020-07-14 04:15:34 -0500 received badge  Teacher (source)
2015-07-26 20:41:04 -0500 received badge  Student (source)
2014-10-12 22:03:59 -0500 received badge  Famous Question (source)
2014-09-25 07:32:43 -0500 answered a question Problem with Hector Navigation

I found a solution ! Hector Exploration Controller is calling the Hector Path Follower node. In this node there is some parameter like tolerance_trans or tolerance_rot. Changing the default parameters from 0.1 and 0.2 to 0.3 for both, the robot is not turning on itself anymore. Moreover, the acceleration and the stop was very strong. So I decrease the k_trans and the k_rot for the gain in translation and rotation and it's now smoother.

I hope it will help someone else trying to use the solutions provided by Hector Team ;)

2014-09-23 22:28:53 -0500 received badge  Editor (source)
2014-09-22 13:19:44 -0500 received badge  Notable Question (source)
2014-09-22 01:04:34 -0500 edited question Problem with Hector Navigation

Hello everyone,

I am working on a robot (turtlebot) to make autonomous navigation in an unknown environment with some extra skills (objet recognition, object localization, ...).

The robot is equipped with a Hokuyo UTM-30LX and a Asus XtionPRO. On the Turtlebot there is a small laptop (Ubuntu 12.04, ROS Hydro) to get the data from the sensors (scan from the lidar and images from the camera) and to receive the cmd_velocity to move the robot. Another computer (Ubuntu 12.04, Ros Groovy) is used to process all this data and for example to calculate the path of the robot. For the map&localization I'm using Hector SLAM. For the navigation, I'm using Hector Navigation Stack (hector_costmap, hector_exploration_node, hector_ecploration_controller). Here is my launchfile for the navigation part:

<launch>
<node pkg="hector_costmap" type="hector_costmap" name="hector_costmap" output="screen" respawn="false">
    <!-- Frame names -->
    <param name="cost_map_topic" value="cost_map" />
    <param name="map_frame_id" value="map" />
    <param name="local_transform_frame_id" value="base_footprint" />
    <param name="elevation_map_topic" value="elevation_map_local" />
    <param name="grid_map_topic" value="scanmatcher_map" />
    <param name="sys_msg_topic" value="syscommand" />
    <param name="cloud_topic" value="openni/depth/points" />

    <!-- Costmap parameters -->
    <param name="use_elevation_map" value="false" />
    <param name="use_grid_map" value="true" />
    <param name="use_cloud_map" value="false" />

    <param name="initial_free_cells_radius" value="0.3" />
    <param name="update_radius" value="1.0"/>
    <param name="costmap_pub_freq" value="1.0" />
</node>

<node pkg="hector_exploration_node" type="exploration_planner_node" name="hector_exploration_node" output="screen">
    <rosparam file="$(find hector_exploration_node)/config/costmap.yaml" command="load" />
</node>

<node pkg="hector_exploration_controller" type="simple_exploration_controller" name="hector_exploration_controller" output="screen" respawn="true">
    <remap from="/cmd_vel" to="/mobile_base/commands/velocity"/>
</node>
</launch>

And here is the costmap config file:

global_costmap:
    map_type: costmap
    track_unknown_space: true
    unknown_cost_value: 255
    obstacle_range: 2.5
    raytrace_range: 3.0
    footprint: [[0.15, 0.0],
              [0.15, 0.15],
              [0.0, 0.17],
              [-0.15, 0.15],
              [-0.15,0.0],
              [-0.15,-0.15],
              [0.0, -0.17],
              [0.15, -0.15]
              ]
    inflation_radius: 0.50

    #transform_tolerance: 0.5
    inscribed_radius: 0.3
    circumscribed_radius: 0.32
    global_frame: /map
    robot_base_frame: /base_link
    update_frequency: 0.5
    publish_frequency: 0.1
    static_map: true
    rolling_window: false
    cost_scaling_factor: 10.0

It seems to work well, Hector packages find frontiers, can calculate the path. The velocity command is well sent to the robot, but this latter is like a drunk robot ! It is making circles and don't follow the path.... (see Figure: https://www.dropbox.com/s/w4tuocrf1py... )

I'm sure it's because I miss something or put bad parameters. Do you have any idea ?

Thank you for your help ! :)

Edit : I make new tests and the robot still have the same behaviour: turning on itself. I noticed that the robot stops for a short moment when a new path was calculated and it still turn on itself. It's like if the robot can't be on the exact location of the path and turns to try being on the path... Is there any parameters to give it more tolerance ? Moreover I just use the cmd_velocity generated by the hector_exploration_controller, is it enough ? I saw that there is also the hector_path_follower but ... (more)

2014-09-19 15:31:14 -0500 received badge  Popular Question (source)
2014-06-27 00:58:34 -0500 received badge  Enthusiast
2014-06-18 01:13:54 -0500 commented answer Give 'manual' goal to Hector Exploration Planner

Thank you very much for your complete answer and your help. Thank you also for you and your team for this great and very interesting work. It just remains for me to work on it now :)

2014-06-18 01:10:19 -0500 received badge  Supporter (source)
2014-06-18 01:10:12 -0500 received badge  Scholar (source)
2014-06-17 17:22:02 -0500 received badge  Famous Question (source)
2014-06-17 17:22:02 -0500 received badge  Notable Question (source)
2014-06-17 06:18:12 -0500 received badge  Popular Question (source)
2014-06-17 01:11:22 -0500 asked a question Give 'manual' goal to Hector Exploration Planner

Hello everyone,

I am working on a robot to make autonomous navigation in an unknown flat environment. The robot is equipped with a Hokuyo UTM-30LX and a Kinect. My ultimate goal is to make a map of the place with the identification of objects that are present. To achieve this, I use the tools provided by Hector team that really meet my needs: Hector Mapping, Hector Map Server, Hector Geotiff, Hector Trajectory Server, Hector Elevation Mapping for the Mapping part, and Hector Costmap, Hector Exploration node for the navigation part. Everything seems to work properly after my first tests.

Now - when I will found a tool to make efficient detection of objects - I would like to give a 'manual' goal for the planner. For example, if the robot recognizes objects in its database, it will go to them; otherwise the rest of the time continue the exploration. I think it will be possible - I don't know how yet - to add the position of a detected object on the map thanks to Geotiff Node and Server Map node. So instead the planner gives a pose goal to generate the path as you can see in the following video :

www.youtube.com/watch?v=cd2FGMBj8iw

, it may sometimes give a goal to a recognized object. I look in the source code hector_exploration_planner but I don't really know how to do. Do you have any idea?

I'm working on Ubuntu 12.04 and Groovy.

Thank you for your help,

Jeremy

Ps : Last question : do you know/have any idea for how to show the color on the map like in the Youtube video ? This colouring which seems indicate areas of importance.

Edit : I finally had the opportunity to test my implementation. Using makePlan function the robot calculates its trajectory towards my manual goal. However, there is always a call to the service GetRobotTrajectory with Hector Exploration Controller... Therefore, the robot never manages to move to my goal. Do you have an idea to fix this problem?