MoveGroupInterface failes - Robot model parameter not found! Did you remap 'robot_description'?

asked 2020-12-07 11:00:22 -0500

rosnutsbolts gravatar image

updated 2020-12-07 14:53:39 -0500

gvdhoorn gravatar image

Use case: Am trying to use ROS to control multiple robots with different URDF (can control using one URDF) so that each robot has a separate urdf/moveit setup. Only want basic trajectory functionality. Instead of one massive urdf with each robot base position defined by fixed base joint offset, amd trying a namepsace in a roslaunch group. Used moveit assistant to set up all the configuration files, but modified roslaunch to have a group with namespace. Testing with gazebo first. Have seen post where tf is the problem but tf has multiple remap options but not into guessing games (https://stackoverflow.com/questions/5...). If there is a book explaining this as I can’t find website, please advise. (It appears as if people have gotten this to work, but I can’t find an instance online).

Platform: ROS1 Kinetic/Ubuntu 16.04 tf1

Problem:

This cpp statement

    _move_group=MoveGroupInterfacePtr(new moveit::planning_interface::MoveGroupInterface(PLANNING_GROUP));

gives this error:

[ERROR] [1607355463.560649688]: Robot model parameter not found! Did you remap 'robot_description'?
[FATAL] [1607355463.560786334]: Unable to construct robot model. Please make sure all needed information is on the 
parameter server.

With this launch file:

<?xml version="1.0" encoding="UTF-8"?>
<launch>
   <!-- overwriting these args -->
   <arg name="rvizconfig" default="$(find fanuc_lrmate200id_support)/config/urdf.rviz" />
   <arg name="debug" default="false" />
   <arg name="gui" default="true" />
   <arg name="pause" default="false" />
   <arg name="world" default="$(find fanuc_lrmate200id_support)/world/aprs-lab.world" />
   <arg name="use_gui" default="false" />
   <!-- include gazebo_ros launcher -->
   <include file="$(find gazebo_ros)/launch/empty_world.launch">
      <arg name="world_name" value="$(arg world)" />
      <arg name="debug" value="$(arg debug)" />
      <arg name="gui" value="$(arg gui)" />
      <arg name="paused" value="$(arg pause)" />
      <arg name="use_sim_time" value="true" />
   </include>
   <arg name="ns" default="lrmate" />
   <!-- empty strings are not allowed for namespace ! -> "/" -->
   <group ns="$(arg ns)">
      <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find fanuc_lrmate200id_support)/urdf/fanuc_only.xacro'" />

      <!-- The semantic description that corresponds to the URDF OR USE move_group.launch -->
      <param name="robot_description_semantic" textfile="$(find fanuc_lrmate200id_support)/config/fanuc_lrmate200id.srdf" />

      <!-- Set the param that trajectory_execution_manager needs to find the controller plugin -->
      <param name="moveit_controller_manager" value="moveit_fake_controller_manager/MoveItFakeControllerManager" />

      <!-- The rest of the params are specific to this plugin -->
      <rosparam file="$(find fanuc_lrmate200id_support)/config/fake_controllers.yaml" />
      <node name="spawn_urdf1" pkg="gazebo_ros" type="spawn_model" args="-param robot_description -urdf -x -0.169 -y -1.140 -z 0.934191 -model aprs" respawn="false" output="screen" />

      <!-- Run the main MoveIt executable without trajectory execution (we do not have controllers configured by default) -->
      <include file="$(find fanuc_lrmate200id_support)/launch/move_group.launch">
         <arg name="allow_trajectory_execution" value="true" />
         <arg name="fake_execution" value="true" />
         <arg name="info" value="true" />
         <arg name="debug" value="true" />
      </include>


      <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ns="$(arg ns)">
         <rosparam param="source_list">["crcl/joint_states"]</rosparam>
      </node> ...
(more)
edit retag flag offensive close merge delete