-
Notifications
You must be signed in to change notification settings - Fork 91
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
when I use descartes to move a specf cartesian path ,I found that the robot will cause collision to the environment #257
Comments
I seem to have the same problem, using ROS Noetic, along with collision mesh and primitive... Descartes detects no collision and the robot passes right through the objects. |
I would look into the UR3RobotModel implementation and see if the check_collisions_ flag is being honored |
Hi @jrgnicho , and thanks for your answer! Actually, I'm working on a different robot than the UR3. I tried checking out the branch from #237, but I still can't make runtime defined scene object be considered for collision. I read (here #238) that yet it is only possible if objects are defined in the URDF. However, for my application, it wouldn't be practical. Have any of you guys managed to make in work? Is there a branch somewhere or instructions I could follow to enable collision checking for the live planning scene objects (meshes and primitives)? |
You may have to override the various isValid methods to do the kind of collision checking that your application needs |
@gauvindigital , have you solved the problem? I have tried the method box defined in the urdf,but it still produce the path which collision with the box defined in the urdf , like |
Hi @dbdxnuliba! |
I has list part of the code of application :
int main(int argc,char** argv)
{
ros::init(argc,argv,"plan_and_run");
ros::AsyncSpinner spinner(2);
spinner.start();
moveit::planning_interface::PlanningSceneInterface scene;
// creating application
plan_and_run::DemoApplication application;
// loading parameters
application.loadParameters();
application.loadEnv(scene);
// initializing ros components
application.initRos();
// initializing descartes
application.initDescartes();
// moving to home position
application.moveHome();
// generating trajectory
plan_and_run::DescartesTrajectory traj;
application.generateTrajectory(traj);
// planning robot path
plan_and_run::DescartesTrajectory output_path;
application.planPath(traj,output_path);
// running robot path
application.runPath(output_path);
// exiting ros node
spinner.stop();
return 0;
}
void DemoApplication::initDescartes()
{
robot_model_ptr_.reset(new ur3_demo_descartes::UR3RobotModel());
// //Enable collision checking
robot_model_ptr_->setCheckCollisions(true);
if(robot_model_ptr_->initialize(ROBOT_DESCRIPTION_PARAM,
config_.group_name,
config_.world_frame,
config_.tip_link))
{
ROS_INFO_STREAM("Descartes Robot Model initialized");
}
else
{
ROS_ERROR_STREAM("Failed to initialize Robot Model");
exit(-1);
}
bool succeeded = planner_.initialize(robot_model_ptr_);
if(succeeded)
{
ROS_INFO_STREAM("Descartes Dense Planner initialized");
}
else
{
ROS_ERROR_STREAM("Failed to initialize Dense Planner");
exit(-1);
}
ROS_INFO_STREAM("Task '"<<FUNCTION<<"' completed");
}
}
void DemoApplication::loadEnv(moveit::planning_interface::PlanningSceneInterface& scene)
{
ros::NodeHandle pnh("~");
//pose.position.z = -high / 2.0;
pose.position.z = 0.2;
ROS_INFO_STREAM("Task '"<<FUNCTION<<"' completed");
}
and my question is:
the terminal show:
[ INFO] [1628060841.585946958]: Sparse planner succeeded with 102 planned point and 698 interpolated points in 3.747662 seconds
[ INFO] [1628060841.586019375]: Valid path was found
[ INFO] [1628060841.588509838]: Task 'planPath' completed
[ INFO] [1628060842.421728051]: Ready to take commands for planning group manipulator.
[ INFO] [1628060844.693831500]: Robot path sent for execution
[ INFO] [1628060957.975317054]: Robot path execution completed
[ INFO] [1628060957.975341219]: Task 'runPath' completed
it means the descartes has found Valid path ,but the path caused robot-collison with the environment, please tell me where I went wrong
the phenomenon ocurrs when I use descartes-melodic version from https://github.com/ros-industrial-consortium , but that does not appear when I use
welding_tutorial version from https://github.com/JeroenDM/descartes
the welding_tutorial version can successfully point out it cannot produce appropraite trajectory ,
it apper tips:
[ WARN] [1628066231.982286052]: GetAllIK has not solutions
[ WARN] [1628066231.982852456]: GetAllIK has not solutions
[ WARN] [1628066231.982870585]: Failed for find ANY joint poses, returning
[ERROR] [1628066231.982887910]: calculateJointSolutions: IK failed for input trajectory point with ID = ID251
[ERROR] [1628066231.982899951]: unable to calculate joint trajectories for input points
but descartes-melodic version from https://github.com/ros-industrial-consortium/descartes produced a trajectory which cause robot-collison with environment ;
so ,can you tell me how can we avoid that when I use descartes-melodic version from https://github.com/ros-industrial-consortium/descartes.
The text was updated successfully, but these errors were encountered: