Skip to content

Motoman MA1400 simulation for Gazebo and ROS

Notifications You must be signed in to change notification settings

MaxBaeten/ma1400_sim

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✨ MA1400 Simulator ✨

The goal of this package is to provide a simulated Motoman MA1400 Welding Robot in Gazebo and simulated low level DX100 controller and expose them with an interface that is described by the motoman_driver ROS driver.

Introduction

This package provides a simulated implementation of a 6-axis MOTOMAN MA1400 industrial robot arm, including a URDF, visual and collision meshes, and launch files to get it up and running in Gazebo.

Also included is an interface for controlling the trajectory of the robot that mimcs the interface used by mototman_driver ROS driver. The low level trajectory following algorithm done by the actual robot controller (such as the DX1000) is also simulated.

Basic URDF Creation

The SolidWorks to URDF Exporter made URDF creation much easier. After installing the plugin and opening the *.stp filein SolidWorks (2014 in my case), a coordinate system must be defined at each joint and material properties of each link defined. By selecting File->Export as URDF, a wizard pops up which allows you to define each link in parent, child order, starting from the base_link.

At this point the plugin automatically generates the origins for each link and joint, as well as mass and inertia properties. It is up to the user to define the axis of rotation, as well as limits on rotation, velocity, and effort. The plugin also generates *.stl files and links to them in the URDF. (**Note: I had the issue that the *.stl files were saved with capitalized extension, which caused problems. After changing this, everything was fine.)

I found that it was necessary to add a damping element to each joint. If this is left out, the robot is very springy in simulation.

Using xacro files instead of urdf

At this point, the user must manually change some parts of the URDF. First, the user may want to use a *.xacro file instead of a *.urdf. These two files are very similar, except xacro files can use macros to generate repetitive blocks of text, making the file cleaner and less prone to mistakes. For more imformation, check out this tutorial.

Additional gazebo specific elements

At this point, the simulated robot can be viewed inside rviz. However, a few more things must be defined before it is ready for simulation in Gazebo. This tutorial describes how to add specific Gazebo elements such as material (for color) and friction.

Control

Low level position control using ros_control

A low level position, velocity, or effort controller can be applied at each joint using the ros_control package. In order to do this several more things must be defined in the URDF or xacro file, including transmissions, and a Gazebo plugin. A /*.yaml file is also necessary to configure the controller and launch files are necessary to get everything started. Great tutorials on setting all of this up can be found here and here.

Trajectory controller simulator and interface

The Motoplus-ROS Incremental Motion interface defines the reaction of the controller in response to a trajectory_msgs\JointTrajectory message. The moto_ros_interface program subscribes to a trajector_msgs\JointTrajectory message and interpolates between the position and velocity targets to provide smooth motion with linear acceleration approximations.

Run a demo

First boot up the gazebo simulation and MotoRos interface simulator

roslaunch ma1400_sim complete.gazebo.launch

To send a simple sine wave trajectory to all the joints of the welding arm, run the following script:

rosrun ma1400_sim trajectory_control.py

To rotate the positioner with a simple sine wave, run the following script:

rosrun ma1400_sim position_control.py

About

Motoman MA1400 simulation for Gazebo and ROS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 44.1%
  • Python 31.9%
  • CMake 24.0%