Comparison of IK functions

Hi,

In this blog, I will explain the functions that the Moveit! package provides to move the ABB to end-effector positions. Using MoveIt! KDL solver, I am able to move the robot to predicted y-coordinates given x-coordinates using my trajectory prediction algorithm.

A function that I explored is compute_cartesian_path which plans a Cartesian path by specifying a list of waypoints for the end-effector to go through. Within the Moveit! package, the convention is to use metres, therefore, I chose a step size of 0.01 to move the robot between points at a resolution of 1cm.

Below is a snippet of my code that implements the compute_cartesian_path function to move the robot to positions in  reference to the air-hockey table.

Implementation of compute_cartesian_path function

Sending trajectory commands from ROS to the robot's controller creates a small delay due to the implementation of the ABB driver of downloading trajectories instead of streaming them. It is difficult for the robot to compensate with the delay if a puck is moving very fast, especially as the table's dimension is quite small.

Therefore, I had to make my code as efficient as possible to reduce possible latency before increasing the robot's speed. Thus, I explored another function called go which removes planning time and simply sets the end-effector to the specified position.

Below is a snippet of my code that implements the go function.

Implementation of go function

I tested the time it took for the ABB to complete a trajectory using both functions in simulation. Using command rostopic echo /joint_path_command, I found out the duration for the robot to complete the trajectory. Below is a video showcasing the robot's movements which I compared both functions. Note that I only measured the second movement in the video.



Video showcasing the movement that the functions were measured on

Surprisingly, function go generated a list of waypoints for the end-effector to go to. However, the test proved that function go generated a shorter trajectory duration with 233ms compared to 2504ms with function compute_cartesian_path.

Immanuel

Comments

Popular posts from this blog

Introduction

Test - Relationship between Accuracy and Angle