Error running move_base in navigation stack
Hi,
I am trying to run the ROS navigation stack to take input from two Hokuyo laser sensors and output velocity commands to a robot according to a set goal.
I have set up the navigation stack as in the ROS tutorials http://wiki.ros.org/navigation/Tutorials/RobotSetup/ except that instead of running the AMCL package, I am using gmapping to localise the robot and create a global map.
My launch files are:
wheelchair_config.launch
<launch>
<include file="$(find laser_pipeline)/launch/hokuyo.launch"/>
<include file="$(find odometry)/launch/tf.launch"/>
</launch>
and move_base.launch
<launch>
<master auto="start"/>
<!--- Run gmapping for localisation -->
<include file="$(find laser_pipeline)/launch/gmapping.launch" />
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
<param name="base_local_planner" value="dwa_local_planner/DWAPlannerROS" />
<rosparam file="$(find wheelchair_nav)/launch/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find wheelchair_nav)/launch/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find wheelchair_nav)/launch/local_costmap_params.yaml" command="load" />
<rosparam file="$(find wheelchair_nav)/launch/global_costmap_params.yaml" command="load" />
<rosparam file="$(find wheelchair_nav)/launch/base_local_planner_params.yaml" command="load" />
</node>
</launch>
In the yaml configuration files, I have followed the guidelines set out in the tutorial linked above: - in common config yaml: two laser sensors for my observation sources, robot footprint set up as a rectangle - in global costmap config yaml: global frame = /map, robotbaseframe = /baselink, staticmap =false - in local costmap config yaml: global frame = /odom, robotbaseframe = /baselink, staticmap = false, rolling_window = true - base local planner yaml identical to tutorial example
When I launch the wheelchair config file, the laser data and transforms appear as expected in rviz. When I then launch the move base file, the gmapping node seems to set up correctly and outputs a map in rviz as expected but I get an error with the move_base node.
process[movebase-2]: started with pid [28781] terminate called after throwing an instance of 'boost::exceptiondetail::cloneimpl<boost::exceptiondetail::errorinfoinjectorboost::lock_error >' what(): boost: mutex lock failed in pthreadmutexlock: Invalid argument [movebase-2] process has died [pid 28781, exit code -6, cmd /opt/ros/indigo/lib/movebase/movebase _name:=movebase _log:=/home/steph/.ros/log/a82bb134-6cd4-11e5-9cc0-88532ea048df/movebase-2.log]. log file: /home/steph/.ros/log/a82bb134-6cd4-11e5-9cc0-88532ea048df/movebase-2*.log
If I try to proceed to send goals to the navigation stack (despite the error as above) as instructed in the tutorial http://wiki.ros.org/navigation/Tutorials/SendingSimpleGoals I get an output message stating
[ INFO] [1444210927.061683327]: Waiting for the move_base action server to come up
which makes me think the move_base node was perhaps not initiated correctly.
Does anyone know what causes this error when running the move base package? And is it likely that this error is the reason why the move base action server does not come up?
Thank you.
Addit: After trying to break down my process further, it seems that move_base crashes when I try to launch either my transform file or gmapping, which makes me think the problem is somehow being caused by my transforms?
My tf.launch file is
<launch>
<!-- ********** TFs ********** -->
<!-- dynamic transform from odom to base_link-->
<node pkg="odometry" type="calculate_odometry" name="calculate_odometry"/>
<node pkg="odometry" type="chair_tf_broadcaster" name="chair_tf_broadcaster"/>
<!--static transform from base_footprint to base_link -->
<node pkg="tf" type="static_transform_publisher" name="base_footprint_to_base_link"
args="0 0 0.465 0 0 0 base_footprint base_link 10"/>
<!-- static transform from base_link to laser_left_link -->
<node pkg="tf" type="static_transform_publisher" name="base_link_to_laser_left_link"
args="-0.3 0.2 0.730 0 0 0 base_link laser_left_link 10" />
<!-- static transform from base_link to laser_right_link -->
<node pkg="tf" type="static_transform_publisher" name="base_link_to_laser_right_link"
args="-0.3 -0.2 0.730 0 0 0 base_link laser_right_link 10" />
</launch>
Asked by steph_v on 2015-10-07 05:06:59 UTC
Answers
Hi - I have worked out the underlying problem. I found that running move_base and any transform concurrently would cause move_base to crash. I am currently using ROS on the Linux Mint platform. I reinstalled ROS inside Ubuntu instead, and now move_base and transforms are working correctly. I realise Linux Mint is not an officially supported platform for ROS, but I haven't had any problems with other packages prior to this. As a side note, I'm just wondering if anyone knows why Linux Mint causes issues. Thanks!
Asked by steph_v on 2015-10-12 21:14:26 UTC
Comments
I am quite sure the issue has nothing to do with Linux Mint. Did you get any error message or warning when move_base crashed, or any log file you can share?
Asked by hvpandya on 2015-10-13 12:08:26 UTC
Hi,steph! I met exactly the same problem as yours. And I don't understand your statement "running move_base and any transform concurrently would cause move_base to crash". Can you explain that to me? Thank you in advance!
Asked by Clack on 2016-06-28 00:20:18 UTC
Comments