ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A answers.ros.org

# speed up RViz/MoveIt

I am working with a KaWaDa nextage robot using rtmros_nextage and Moveit via the moveit_commander python interface like this:

rtmlaunch nextage_ros_bridge nextage_ros_bridge_simulation.launch
roslaunch nextage_moveit_config moveit_planning_execution.launch
ipython -i rospack find nextage_ros_bridge/script/nextage.py


Sadly the robot movements are very slow, so I am looking for a way to speed up things. I thought of several possibilities:

1. I do not necessarily need the visualisation all the time. Can I switch off the rendering somehow while the robot keeps trying things in a mathematical simulation only?
2. I also came across this solution which essentially tries to scale the velocity fields of RobotTrajectory, but that does not seem to be possible for me, because the velocities (or points) are tuples and thus immutable.

Is there another way to let the robot try different actions faster?

(sorry for the long tag list, I am quite new and don't know whether the solution will be robot-specific, or moveit-specific, or rospy etc... )

edit:

I also found this file containing max_velocity and max_acceleration limits.

Can I dynamically change these via rospy?

edit 2:

The code referred to as 'this solution' in 2. (might actually be a workaround rather than a solution): the following code snippet appears to alter the trajectory speed as desired (here the speed is doubled):

 traj = right_arm.plan()
new_traj = RobotTrajectory()
new_traj.joint_trajectory = traj.joint_trajectory
n_joints = len(traj.joint_trajectory.joint_names)
n_points = len(traj.joint_trajectory.points)

spd = 2.0

for i in range(n_points):
traj.joint_trajectory.points[i].time_from_start = traj.joint_trajectory.points[i].time_from_start / spd
for j in range(n_joints):
new_traj.joint_trajectory.points[i].velocities[j] = traj.joint_trajectory.points[i].velocities[j] * spd
new_traj.joint_trajectory.points[i].accelerations[j] = traj.joint_trajectory.points[i].accelerations[j] * spd
new_traj.joint_trajectory.points[i].positions[j] = traj.joint_trajectory.points[i].positions[j]

self.right_arm.execute(new_traj)

edit retag close merge delete

Sort by » oldest newest most voted

I do not necessarily need the visualisation all the time. Can I switch off the rendering somehow while the robot keeps trying things in a mathematical simulation only?

I'll take a close look later today (and I'll update this answer once I can), but try running separately the launch files that are started through nextage_moveit_config/launch/moveit_planning_execution.launch; you should be able to run MoveIt! without visualization on RViz.

(sorry for the long tag list, I am quite new and don't know whether the solution will be robot-specific, or moveit-specific, or rospy etc... )

I'd say so far the issues/desires you raised seem to me pretty much robot-agnostic ;)

UPDATE 20170104

I also came across this solution which essentially tries to scale the velocity fields of RobotTrajectory, but that does not seem to be possible for me, because the velocities (or points) are tuples and thus immutable.

The thread you referred to is a bit long for me to track down...Which "solution" did you mean?

I also found this file containing max_velocity and max_acceleration limits. Can I dynamically change these via rospy?

The link to "this file" seems corrupted but I assume joint_limits.yaml. The velocity and acceleration values in that file is meant to be static and not supposed to be configurable during runtime (as Jeremy explained in the same thread you referred to earlier).

With the newest MoveIt! (for Indigo, 0.7.6), you can use scaling factor feature more conveniently than ever before. Using it through RViz is the easiest but in case visualization is not an option for you, you can also modify the topic MotionPlanRequest as explained in the same page (although I haven't figured out how...I haven't found that topic being published using nextage_moveit_config. I asked a question).

more

1

Indeed, it seems I can run my code without visualisation this way. Thanks! (if someone has a comment on 2., i.e. on setting velocities, I'm still interested though!)

( 2016-12-19 04:39:36 -0600 )edit

thanks, I ment joint_limits.yaml. Updated the link in my question

( 2017-01-05 02:58:47 -0600 )edit