Turtlebot Arm Gazebo simulation (with MoveIt)

asked 2018-04-13 06:29:30 -0500

RedJohn gravatar image

My goal

My goal is to have the turtlebot arm simulated in Gazebo and control its movements programmatically (preferably through MoveIt). I don't want/need the turtlebot itself, just the arm.

What I've done

I have git cloned & catkin build & sourced the packages for the turtlebot arm (and also the arbotix-packages), and there are already the description package (with the urdf-files), a MoveIt package and various other packages in the repository, but unfortunately no Gazebo package. I can run the MoveIt demo (roslaunch turtlebot_arm_moveit_config demo.launch) where one can set the goal pose of the arm in Rviz and plan & execute the arm to get to the desired pose. I know that one can do that also programmatically through a python script or a C++ program (as described here).

I tried to make a Gazebo package myself, taking the one from the universal robot as a template, but I'm a bit lost with all the files in there. I managed to load the robot arm into Gazebo (with the base_link fixed), but there the arm just falls down, as if there were no controllers running. With the running Gazebo simulation, I get the following rostopic list:

/gripper_controller/gripper_action/cancel
/gripper_controller/gripper_action/feedback
/gripper_controller/gripper_action/goal
/gripper_controller/gripper_action/result
/gripper_controller/gripper_action/status
/gripper_joint/command

My Gazebo launch file looks like this:

<launch>
  <!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find turtlebot_arm_gazebo)/worlds/turtlebot_arm.world"/>
    <!-- more default parameters can be changed here -->
  </include>
  <!-- Convert an xacro and put on parameter server -->
  <param name="robot_description" command="$(find xacro)/xacro.py $(find turtlebot_arm_description)/urdf/turtlebot_arm.urdf.xacro" />
  <!-- Spawn a robot into Gazebo -->
  <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-param robot_description -urdf -model turtlebot_arm" />
</launch>

I'm running Gazbebo 7.11.0 with ROS Kinetic on a Ubuntu 16.04 (in a VM on a Win10 host).

My question

What do I have to do in order to control the turtlebot arm not only in Rviz, but also in Gazebo? I'm relatively new to Gazebo/ROS, so apologises if this seems lika a trivial task to you. Thank you for your help!

edit retag flag offensive close merge delete

Comments

Thank you, I went through this tutorial, but it assumes one already has a working Gazebo & control package, which are both not present in the turtlebot arm repo. Nevertheless, the arm now stands upright in the Gazebo simulation and doesn't fall down anymore, so at least something:) However, if I move the arm with the Rviz & MoveIt GUI, the arm in Gazebo doesn't move (even though the logging of the Gazebo terminal says it has received & executed an action goal of the arm_controller). Any ideas?

RedJohn gravatar imageRedJohn ( 2018-04-16 02:13:30 -0500 )edit