0
$\begingroup$

Rosanswers logo

My robot is designed spray concert on the inside of tunnel walls. It has a nozzle for spray at the end of a long arm. To distribute the concrete, the nozzle has to be moved back and forth across the tunnel surface in a specific path. Path description:

  • Consists of horizontal lines along the tunnel surface.
  • Semicircles connect the lines
  • The nozzle (frame) must at all times be orientated towards the surface.
  • The velocity of the nozzle should be near constant to ensure spread of on the concrete.

My question is: How can I utilize MoveIt to plan a path that satisfy these specifications? Alternatively, could I define such a path myself, and let MoveIt create the joint trajectories? Suggestions on better approaches are also appreciated, as I am a MoveIt novice.

Would gladly upload illustrative pictures if I get some points.

Any help appreciated :)


Edit: Thank you for the response @AndyZe, this seems like a very good approach. However, in discussion with my supervisor, we concluded that the input to the planning module should be a set of waypoints. At first, I experimented with the computeCartesianPath() function of MoveGroupInterface, then I tried to utilize setPoseTargets() as suggested by @sampreets3. Unfortunately, I have not been able to implement a working planner yet. My issue is my waypoints are too strict:

  • The robot only has 5 Degrees of freedom.
  • The waypoints I have defined include orientation and position (6 DOF). Trough testing in Rviz, it is clear that many of the waypoints I defined for the robot are unreachable (in orientation).

However, I only need the x-axis of my end effector (nozzle) to point in a certain direction, the y and z-axis are irrelevant. So my question is: Is it possible to define target poses where the orientation is not fully defined? Keep in mind that target orientation changes between the waypoints.


Originally posted by Hennifre on ROS Answers with karma: 11 on 2023-04-18

Post score: 1

$\endgroup$

2 Answers 2

0
$\begingroup$

Rosanswers logo

I would:

  • Use moveit_cpp. Tutorial here
  • Use the Pilz industrial motion planner to plan the circular segment and the line segments individually. Tutorial here
  • Write your own functions to parse the waypoints and retime them, since you know how fast the robot needs to move
  • Then combine all the sub-trajectories into one large one.

Originally posted by AndyZe with karma: 2331 on 2023-04-19

This answer was NOT ACCEPTED on the original site

Post score: 2


Original comments

Comment by AndyZe on 2023-04-24:
New info about 5-dof:

Comment by AndyZe on 2023-04-24:
By the way, do you happen to work for a company starting with "I", @Hennifre?

Comment by Hennifre on 2023-04-24:
Thank you, @AndyZe, I will look into your suggestion.

I am working on my master thesis. The project is provided by a company, but it does not start with "I".

$\endgroup$
0
$\begingroup$

Rosanswers logo

What @AndyZe has suggested would be quite robust, especially using the Pilz Motion Planner.

Alternatively, could I define such a path myself, and let MoveIt create the joint trajectories?

You can take a look at the setPoseTargets function of MoveGroupInterface. I think this is close to what you want to pass in as inputs to the planning problem.


Originally posted by sampreets3 with karma: 230 on 2023-04-19

This answer was NOT ACCEPTED on the original site

Post score: 1


Original comments

Comment by Hennifre on 2023-04-24:
I tested your suggestion, and would like to use the MoveGroupeInterface (MGI) as it is beginner-friendly. The problem is that the PoseTargets must be fully defined (position and orientation). Note the edit in my original post: my robot has 5 Degrees of freedom. MGI does not provide ways of relaxing the constraints on one specific orientation angle. The only options seem to be to relax the entire orientation constraint. I found this pull request for adding the functionality I need, but unfortunately it has not come through yet ...

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.