Ask Your Question
0

How can i send a moveit trajectory to an ABB robot arm

asked 2019-10-17 09:13:49 -0600

Shawn gravatar image

Hi guys,

I am working with an ABB IRB2600 with an IRC5 controller and ROS kinetic. I created a moveit_config package for the robot using the setup_assistant and the support package from the abb_experimental package. My launch file is the demo.launch in which I removed the joint_state_publisher and set "fake execution" as false for the move_group.launch. Using the robot_interface_download_irb2600_12_165.launch I get all the /joint_states from the real robot and I can see the robot moving around in rviz when I jog it in real live. When I plan and execute a trajectory using moveit I get no movement from the robot. It is set to automatic mode and the motors are on.

I found the following post https://answers.ros.org/question/1994... but I cant figure out how to get moveit to send a trajectory to joint_trajectory_action/goal topic.

I get feedback_stateslike described here (3.1) http://wiki.ros.org/Industrial/Tutori... but there are no new messages being published to joint_path_command.

My questions are: How do I get the trajectories generated by moveit to run on my robot? What is the interface between the two sides (moveit/robot)? Do I have to write it by myself or is there already a solution out there?

Thanks in advance for your answers, I've been trying to figure this out for some days now and I am just moving in circles!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2019-10-18 09:10:44 -0600

gvdhoorn gravatar image

updated 2019-10-18 09:14:35 -0600

In short: you'll want to create a top-level .launch file that starts all the required nodes.

The tutorial you linked (Create a MoveIt Package for an Industrial Robot) should show you how to perform all the steps, including creating the top-level moveit_planning_execution.launch.

It's probably easiest to base one for your 2600 on another that already exists, such as this one for an IRB 6640.

Important parts (update references to the 6640 to your 2600 of course):

<rosparam command="load" file="$(find abb_irb6640_support)/config/joint_names_irb6640_185_280.yaml" />

make sure to load the joint_names, otherwise the driver can't map data to your ROS joints.

and:

<group if="$(arg sim)">
  <include file="$(find industrial_robot_simulator)/launch/robot_interface_simulator.launch" />
</group>

<group unless="$(arg sim)">
  <include file="$(find abb_irb6640_support)/launch/robot_interface_download_irb6640_185_280.launch" >
    <arg name="robot_ip" value="$(arg robot_ip)"/>
  </include>
</group>

load either the real driver of the industrial_robot_simulator. The simulator is of course optional, but is always a good idea to check whether you've correctly configured everything.

This top-level .launch file is only one part that you'd need to add (but again: the tutorial should show you how to do that). Other things that need to be added:

  • a list of controllers that MoveIt should use (typically called controllers.yaml in the config folder (here for the IRB 6640))
  • updating the ROBOTNAME_moveit_controller_manager.launch.xml to actually load the controllers.yaml file
  • adding the appropriate (exec_) dependencies on industrial_robot_simulator and the abb_irb2600_support package to your package manifest

Recent versions of the MoveIt Setup Assistant add some of these files and content in somewhat different places. The layout used in ros-industrial/abb and ros-industrial/abb_experimental works well though, so I would recommend you follow that for your 2600 as well. This may mean removing some of the files the MSA adds, but things should still work. When in doubt, check the MoveIt configuration packages in either of the ABB repositories.

edit flag offensive delete link more

Comments

I set up everything according to the tutorials and it turned out I forgot to configure one of my launch files. To get the robot moving in automatic mode I also had to run the T_ROB1 program on the robot controller. Thank you very much for your answer!

Shawn gravatar imageShawn ( 2019-10-23 09:13:12 -0600 )edit

To get the robot moving in automatic mode I also had to run the T_ROB1 program on the robot controller.

have you seen the Running the ROS Server tutorial? Specifically the Robot Motion Task - Running in AUTO mode section? It states:

  • Press the PLAY button to run the program
gvdhoorn gravatar imagegvdhoorn ( 2019-10-23 09:42:36 -0600 )edit

Yeah, that is how I figured out I also had to run the program. Somebody else set up the ROS Server on the controller and it was not obvious to me that I had to do anything besides setting the mode to automatic and enable the motors.

Shawn gravatar imageShawn ( 2019-10-23 09:53:35 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2019-10-17 09:13:49 -0600

Seen: 62 times

Last updated: Oct 18