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.
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.
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
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
Post a Comment