Open jediofgever opened 4 years ago
Same here
Console:
Created GPD ....
[ INFO] [1584601310.962219117]: Waiting for point cloud to arrive ...
[ INFO] [1584601338.677122170]: Received cloud with 307200 points.
Processing cloud with 307200 points.
Cloud after removing NANs: 269020
[detect_grasps-1] process has died [pid 18329, exit code -11, cmd /root/ROB/catkin_ws/devel/lib/gpd_ros/detect_grasps __name:=detect_grasps __log:=/root/.ros/log/20200319-053710_add2b6a2-69a3-11ea-adb8-0030644a53eb/detect_grasps-1.log].
log file: /root/.ros/log/20200319-053710_add2b6a2-69a3-11ea-adb8-0030644a53eb/detect_grasps-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
@seann999 Excuse me. Could you provide some details about how you solve this problem? Thanks.
@seann999 the issue you point is related to PCL, however the output of gdb seems like error is triggered by Eigen;
Thread 1 "detect_grasps" received signal SIGSEGV, Segmentation fault.
Eigen::internal::dense_assignment_loop<Eigen::internal::generic_dense_assignment_kernel<Eigen::internal::evaluator<Eigen::Matrix<float, -1, -1, 0, -1, -1> >, Eigen::internal::evaluator<Eigen::Map<Eigen::Matrix<float, -1, -1, 1, -1, -1> const, 0, Eigen::Stride<0, 0> > >, Eigen::internal::assign_op<float, float>, 0>, 0, 0>::run (kernel=<synthetic pointer>...)
at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:326
326 kernel.assignCoeffByOuterInner(outer, inner);
(gdb) BT
This issue happened to me because the network paths were not correctly found
I used Eigen classifier, which uses some parameters under lenet
folder. I think @atenpas moved lenet
folder from the root of project to models
folder but the default path in the ros_eigen_params.cfg
was not updated accordingly. Finally leading this issue.
So anyone who met this issue make sure your path to the classifiers are correctly set
The same question has show when I run $ roslaunch gpd tutorial1.launch This gpd code is forword version, please help me find where the question at? Thanks again. The error log are as follows
process[detect_grasps-1]: started with pid [9269] NET SETUP runtime: 0.0985822 [ INFO] [1614949591.731973322]: Waiting for point cloud to arrive ... [ INFO] [1614949591.976138311]: Received cloud with 170258 points. Processing cloud with: 170258 points. After workspace filtering: 170258 points left. double free or corruption (out) [detect_grasps-1] process has died [pid 9269, exit code -6, cmd /home/wyu/catkin_ws/devel/lib/gpd/detect_grasps __name:=detect_grasps __log:=/home/wyu/.ros/log/c8eacd48-7db2-11eb-9f63-0024d7d351e8/detect_grasps-1.log]. log file: /home/wyu/.ros/log/c8eacd48-7db2-11eb-9f63-0024d7d351e8/detect_grasps-1*.log all processes on machine have died, roslaunch will exit shutting down processing monitor... ... shutting down processing monitor complete done
I was just wrapping a unique pointer around the cloud_camera object in the grasp_detection_node.cpp
file. Deleting this object causes the segfault on my machine.
[detect_grasps-1] process has died Make sure the path to the .cfg file is set correctly before running roslaunch. for example
# Path to config file for robot hand geometry
hand_geometry_filename = /home/zhao/git_ws/gpd/cfg/hand_geometry.cfg
# Path to config file for volume and image geometry
image_geometry_filename = /home/zhao/git_ws/gpd/cfg/image_geometry_15channels.cfg
# Path to directory that contains neural network parameters
weights_file = /home/zhao/git_ws/gpd/models/lenet/15channels/params/
Maybe "double free or corruption (out)" error will occur, which can be solved as follows
// grasp_detection_node.cpp
void GraspDetectionNode::cloud_callback(const sensor_msgs::PointCloud2& msg)
{
if (!has_cloud_)
{
if(cloud_camera_)
delete cloud_camera_;
cloud_camera_ = NULL;
// ...
[detect_grasps-1] process has died Make sure the path to the .cfg file is set correctly before running roslaunch. for example
# Path to config file for robot hand geometry hand_geometry_filename = /home/zhao/git_ws/gpd/cfg/hand_geometry.cfg # Path to config file for volume and image geometry image_geometry_filename = /home/zhao/git_ws/gpd/cfg/image_geometry_15channels.cfg # Path to directory that contains neural network parameters weights_file = /home/zhao/git_ws/gpd/models/lenet/15channels/params/
Maybe "double free or corruption (out)" error will occur, which can be solved as follows
// grasp_detection_node.cpp void GraspDetectionNode::cloud_callback(const sensor_msgs::PointCloud2& msg) { if (!has_cloud_) { if(!cloud_camera_) delete cloud_camera_; cloud_camera_ = NULL; // ...
I'm experincing memory leak with adding the if (!cloudcamera) for the 'double free or corruption (out)' error. Please be careful if anyone is doing that.
Removing the '-march=native -msse4.2 -mavx2 -mfma -flto' flags in gpd CMakeLists and rebuilding gpd + gpd_ros somehow solves the issue for me. Appreciate if anyone has more insight on this issue and why this helps (or hides the problem if it is?)
For memory leak, updating if(!cloud_camera_)
to if(cloud_camera_)
may be helpful.
我遇到这个问题是因为未正确找到网络路径
我使用了特征分类器,它使用
lenet
文件夹下的一些参数。我认为@atenpaslenet
将文件夹从项目根目录 移动到models
文件夹,但默认路径ros_eigen_params.cfg
未相应更新。终于主导了这个问题。 因此,遇到此问题的任何人都请确保正确设置了分类器的路径
确实是这个问题
Hi! Does anyone have a similar problem in Ubuntu 20.04?
....
==============================================
============ CLUSTERING ======================
min_inliers: 1
==============================================
Created GPD ....
[ INFO] [1729247172.602160208]: Waiting for point cloud to arrive ...
[ INFO] [1729247178.467983706, 2216.431000000]: Received cloud with 278528 points.
Processing cloud with 278528 points.
[detect_grasps-1] process has died [pid 172968, exit code -11, cmd /home/aa/ROSProject/gpd_ws/devel/lib/gpd_ros/detect_grasps __name:=detect_grasps __log:=/home/aa/.ros/log/38559f6e-8d36-11ef-93d5-e15d887eb9da/detect_grasps-1.log].
log file: /home/aa/.ros/log/38559f6e-8d36-11ef-93d5-e15d887eb9da/detect_grasps-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
It seems that after gpd
receives the pcd from gpd_ros
, it will be dead...
Directly using gpd
will be ok:
cd ~/gpd/build
./detect_grasps ../cfg/ros_eigen_params.cfg ../tutorials/krylon.pcd
How to solve this problem? I really need your help......
@zhanghua7099 Could you put the point cloud that you tried with gpd_ros
into a pcd file and try it with detect_grasps
? Or upload it so I can have a look?
@atenpas Hi! Thanks for your reply. I have fixed this problem. In my computer (Ubuntu 20.04), this is caused by the different compile setting of gpd
and gpd_ros
.
In gpd
:
https://github.com/atenpas/gpd/blob/6327f20eabfcba41a05fdd2e2ba408153dc2e958/CMakeLists.txt#L29
However, in gpd_ros
:
https://github.com/atenpas/gpd_ros/blob/9ae524193acecd465ef324c1f3c621a38ae9c31d/CMakeLists.txt#L28
I installed gpd
via mkdir build && cd build && cmake .. && make -j && sudo make install
.
It seems that gpd_ros
will directly use the intalled gpd
. If these two compile options are different, gpd_ros
will fail.
I set the compile options for the two libraries to be the same, and the results are good.
Hello, I am trying to use this lib with my simulated point cloud under gazebo,but I am getting error in title. I see the log but there is no any meaningful output for further debug. Here is what happens when Launch the node;
is there any suggestions ? Thank you for your time