ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

Following a winding path with MoveIt

asked 2023-04-18 09:56:52 -0600

Hennifre gravatar image

updated 2023-04-24 07:08:16 -0600

gvdhoorn gravatar image

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.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
2

answered 2023-04-19 08:19:57 -0600

AndyZe gravatar image

updated 2023-04-19 09:56:13 -0600

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.
edit flag offensive delete link more

Comments

New info about 5-dof:

  • Pilz definitely won't work for 5-dof
  • You can use the bio_ik solver since it returns approximate solutions. This is an easy change in kinematics.yaml
  • When requesting the motion plan, you can specify contstraints. TBH I haven't used this much so I'm not completely sure how it works: https://github.com/ros-planning/movei...
AndyZe gravatar image AndyZe  ( 2023-04-24 08:26:25 -0600 )edit
1

By the way, do you happen to work for a company starting with "I", @Hennifre?

AndyZe gravatar image AndyZe  ( 2023-04-24 08:37:01 -0600 )edit

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".

Hennifre gravatar image Hennifre  ( 2023-04-24 10:10:50 -0600 )edit
1

answered 2023-04-19 11:05:08 -0600

sampreets3 gravatar image

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.

edit flag offensive delete link more

Comments

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 ...

Hennifre gravatar image Hennifre  ( 2023-04-24 10:29:09 -0600 )edit

Question Tools

2 followers

Stats

Asked: 2023-04-18 09:56:52 -0600

Seen: 381 times

Last updated: Apr 24 '23