Now i want to try the Pilz planner, where problems begin. I install the Pilz planner package and copy the pilz_command_planner_planning_pipeline.launch.xml file in my launch directory. I can launch moveit with the pilz_command_pipeline, but while starting the error
Can anybody help me? I dont know where i can set the velocity limit. Changing the velocity in RViz doesn't help.In future i want to use python for control the robot using a script like this. But this doesn't work at all right now.
Windows is using the "usbser.sys" driver to communicate with the pilz PLC (see enclosed picture). I do not know how complex it is to implement this driver in the Unistream PLC. Maybe you can look into it.
I think it is impossible to conect this typ of pilz safety module to Unistream. This pilz PNOZ safety PLC is standalone device with dual processor operation working with downloaded via card or usb project. No networking option is offered by manufacturer for this device, or you choosed wrong pilz model.
this is not correct. You can exchange data (virtuell I/O's, LED Status and so on) over the integrated USB interface even with the standalone device mm0p (As you can see in the picture of my first post). And this is really graet to exchange information with the main PLC.
To the test configuration:
I connected the PNOZ mm0p via a USB cable to my PC (PC is USB Host). Now it is possible to communicate with the mm0p via a termial program (e.g Hterm) as described in the manual.
The planner uses maximum velocities and accelerations from theparameters of the ROS node that is operating the Pilz planning pipeline.Using the MoveIt Setup Assistant the file joint_limits.yamlis auto-generated with proper defaults and loaded during startup.
The specified limits override the limits from the URDF robot description.Note that while setting position limits and velocity limits is possiblein both the URDF and a parameter file, setting acceleration limits isonly possible using a parameter file. In addition to the commonhas_acceleration and max_acceleration parameters, we added theability to also set has_deceleration and max_deceleration(
For Cartesian trajectory generation (LIN/CIRC), the planner needsinformation about the maximum speed in 3D Cartesian space. Namely,translational/rotational velocity/acceleration/deceleration need to beset in the node parameters like this:
The planners assume the same acceleration ratio for translational androtational trapezoidal shapes. The rotational acceleration iscalculated as max_trans_acc / max_trans_vel * max_rot_vel(and for deceleration accordingly).
This package uses moveit_msgs::msgs::MotionPlanRequest and moveit_msgs::msg::MotionPlanResponseas input and output for motion planning. The parameters needed for each planning algorithmare explained below.
This planner generates fully synchronized point-to-point trajectorieswith trapezoidal joint velocity profiles. All joints are assumed to havethe same maximal joint velocity/acceleration/deceleration limits. Ifnot, the strictest limits are adopted. The axis with the longest time toreach the goal is selected as the lead axis. Other axes are deceleratedso that they share the same acceleration/constant velocity/decelerationphases as the lead axis.
trajectory/joint_trajectory/points/(positions,velocities,accelerations,time_from_start):a list of generated way points. Each point haspositions/velocities/accelerations of all joints (same order as thejoint names) and time from start. The last point will have zerovelocity and acceleration.
This planner generates a linear Cartesian trajectory between goal andstart poses. The planner uses the Cartesian limits to generate atrapezoidal velocity profile in Cartesian space. The translationalmotion is a linear interpolation between start and goal position vector.The rotational motion is quaternion slerp between start and goalorientation. The translational and rotational motion is synchronized intime. This planner only accepts start state with zero velocity. Planningresult is a joint trajectory. The user needs to adapt the Cartesianvelocity/acceleration scaling factor if the motion plan fails due toviolation of joint space limits.
The Cartesian limits, namely translational/rotationalvelocity/acceleration/deceleration need to be set and the planner usesthese limits to generate a trapezoidal velocity profile in Cartesianspace. The rotational motion is quaternion slerp between start and goalorientation. The translational and rotational motion is synchronized intime. This planner only accepts start state with zero velocity. The planningresult is a joint trajectory. The user needs to adapt the Cartesianvelocity/acceleration scaling factor if motion plan fails due toviolation of joint limits.
The pilz_industrial_motion_planner::CommandPlanner is provided as a MoveIt Motion PlanningPipeline and, therefore, can be used with all other manipulators usingMoveIt. Loading the plugin requires the param/move_group//planning_plugin to be set to pilz_industrial_motion_planner/CommandPlannerbefore the move_group node is started.For example, the panda_moveit_config packagehas a pilz_industrial_motion_planner pipeline set up as follows:
To use the command planner, Cartesian limits have to be defined. Thelimits are expected to be under the namespace_planning, where refersto the parameter name under which the URDF is loaded.For example, if the URDF was loaded into /robot_description theCartesian limits have to be defined at /robot_description_planning.
To concatenate multiple trajectories and plan the trajectory at once,you can use the sequence capability. This reduces the planning overheadand allows to follow a pre-desribed path without stopping atintermediate points.
A specialized MoveIt functionality known as thecommand list managertakes a moveit_msgs::msg::MotionSequenceRequest as input.The request contains a list of subsequent goals as described above and an additionalblend_radius parameter. If the given blend_radius in meter isgreater than zero, the corresponding trajectory is merged together withthe following goal such that the robot does not stop at the currentgoal. When the TCP comes closer to the goal than the givenblend_radius, it is allowed to travel towards the next goal already.When leaving a sphere around the current goal, the robot returns ontothe trajectory it would have taken without blending.
b1e95dc632