wg-perception / tabletop Goto Github PK
View Code? Open in Web Editor NEWconversion of the old tabletop stack to ecto
conversion of the old tabletop stack to ecto
I want to use tabletop and object detection with Gazebo simulation and with Turtlebot with Astra RGB-D or non-Openni source!
How to achieve that?
I changed the configuration files to topics published by Gazebo, but I got
[ INFO] [1485107783.427112596]: Initialized ROS. node_name: /object_recognition_server
X server found. dri2 connection failed!
X server found. dri2 connection failed!
X server found. dri2 connection failed!
X server found. dri2 connection failed!
X server found. dri2 connection failed!
X server found. dri2 connection failed!
X server found. dri2 connection failed!
X server found. dri2 connection failed!
X server found. dri2 connection failed!
X server found. dri2 connection failed!
X server found. dri2 connection failed!
[ INFO] [1485107783.798901256, 3646.770000000]: System already initialized. node_name: /object_recognition_server
[ INFO] [1485107783.805682051, 3646.780000000]: Subscribed to topic:/camera/depth_registered/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1485107783.808482435, 3646.780000000]: Subscribed to topic:/camera/rgb/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1485107783.811689709, 3646.780000000]: Subscribed to topic:/camera/depth_registered/image_raw [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1485107783.816693898, 3646.790000000]: Subscribed to topic:/camera/rgb/image_color [queue_size: 1][tcp_nodelay: 0]
Is there is any documentation how the package implemented and also on ecto_image_pipeline
which contains camera source, and how to change the implementation!
As discussed in https://groups.google.com/forum/#!topic/object-recognition-kitchen/ijpfJdG9q8E
The ObjectRecognizer.cpp tries to read a mesh called "original" from the DB, but the default way to generate a mesh (i.e. rosrun object_recognition_reconstruction mesh_object --all --commit) doesn't generate a file with such a name.
I modified it to get a bit further. See the following commit.
Then I get the following output. The file is correctly read from the DB, and parsed using the assimp library (aiImportFile()) but for some reason it crashes in line 176 of ObjectRecognizer.cpp (in my modified version) when trying to access the number of indices of the first face of the mesh (face.mNumIndices). This seems to point to a bug in the mesh generator, or a bug in the assimp library. Any ideas?
rosrun object_recognition_core detection -c detection.object.ros.ork
[ INFO] [1393263269.953285655]: Initialized ROS. node_name: /object_recognition_server
[ INFO] [1393263270.736406354]: System already initialized. node_name: /object_recognition_server
[ INFO] [1393263271.697297591]: System already initialized. node_name: /object_recognition_server
[ INFO] [1393263271.708924056]: Subscribed to topic:/camera/depth_registered/camera_info with queue size of 1
[ INFO] [1393263271.712172667]: Subscribed to topic:/camera/rgb/camera_info with queue size of 1
[ INFO] [1393263271.715300890]: Subscribed to topic:/camera/depth_registered/image with queue size of 1
[ INFO] [1393263271.717938160]: Subscribed to topic:/camera/rgb/image_color with queue size of 1
126 :: 0.5 , 1 , 0.995004 , /base_link , /head_mount_kinect_rgb_optical_frame
Loading model: b34c1fdbfcc566e265f880e1f001353f for object id: b34c1fdbfcc566e265f880e1f000049bInfo, T0: Load /tmp/filez5OUHT.stl
Info, T0: Found a matching importer for this file format
Info, T0: Import root directory is '/tmp/'
Info, T0: Entering post processing pipeline
Warn, T0: RemoveVCProcess: AI_CONFIG_PP_RVC_FLAGS is zero.
Info, T0: Points: 0, Lines: 0, Triangles: 1, Polygons: 0 (Meshes, X = removed)
Warn, T0: Mesh 0: Not suitable for vcache optimization
Info, T0: Cache relevant are 0 meshes (0 faces). Average output ACMR is -nan
Info, T0: Leaving post processing pipeline
Mesh: 0 mNumVertices: 7899
Mesh: 0 mNumFaces: 2633
after 0
face[0] address: 0x3cc10454ba60120c
Segmentation fault (core dumped)
Pretty sure this is nothing unknown for most of the readers, but as Kinetic release approach, will become more urgent.
[100%] Built target tabletop_object_ectomodule
In file included from /home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp:40:0:
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:134:5: error: ‘AlgorithmInfo’ does not name a type
AlgorithmInfo*
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:101:9: note: attribute for ‘class cv::RgbdNormals’ must follow the ‘class’ keyword
class RgbdNormals: public Algorithm
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:202:5: error: ‘AlgorithmInfo’ does not name a type
AlgorithmInfo*
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:172:9: note: attribute for ‘class cv::DepthCleaner’ must follow the ‘class’ keyword
class DepthCleaner: public Algorithm
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:315:5: error: ‘AlgorithmInfo’ does not name a type
AlgorithmInfo*
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:274:9: note: attribute for ‘class cv::RgbdPlane’ must follow the ‘class’ keyword
class RgbdPlane: public Algorithm
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:332:21: note: attribute for ‘struct cv::RgbdFrame’ must follow the ‘struct’ keyword
CV_EXPORTS struct RgbdFrame
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:351:21: note: attribute for ‘struct cv::OdometryFrame’ must follow the ‘struct’ keyword
CV_EXPORTS struct OdometryFrame : public RgbdFrame
^
In file included from /home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp:40:0:
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:390:20: note: attribute for ‘class cv::Odometry’ must follow the ‘class’ keyword
CV_EXPORTS class Odometry: public Algorithm
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:502:5: error: ‘AlgorithmInfo’ does not name a type
AlgorithmInfo*
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:480:20: note: attribute for ‘class cv::RgbdOdometry’ must follow the ‘class’ keyword
CV_EXPORTS class RgbdOdometry: public Odometry
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:551:5: error: ‘AlgorithmInfo’ does not name a type
AlgorithmInfo*
^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:605:5: error: ‘AlgorithmInfo’ does not name a type
AlgorithmInfo*
^
/home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp: In member function ‘int tabletop::TableDetector::process(const ecto::tendrils&, const ecto::tendrils&)’:
/home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp:161:20: error: ‘class cv::RgbdPlane’ has no member named ‘set’
plane_finder.set("threshold", *plane_threshold_);
^
/home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp:162:20: error: ‘class cv::RgbdPlane’ has no member named ‘set’
plane_finder.set("min_size", int(*min_table_size_));
^
/home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp:163:20: error: ‘class cv::RgbdPlane’ has no member named ‘set’
plane_finder.set("sensor_error_a", 0.0075);
^
make[2]: *** [ork_tabletop/src/table/CMakeFiles/tabletop_table_ectomodule.dir/TableDetector.cpp.o] Error 1
make[1]: *** [ork_tabletop/src/table/CMakeFiles/tabletop_table_ectomodule.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed
So I suppose the code must be patched with alternative versions with:
#if CV_VERSION_MAJOR == 3
< something for OpenCV3 >
#else
< something else for OpenCV2 >
#endif
as other ORK modules, right? If not, current code will not compile on Kinetic, I suppose.
I tried Object Recognition Using Tabletop, and successfully found planes by command:
rosrun object_recognition_core detection -c rospack find object_recognition_tabletop
/conf/detection.table.ros.ork
however failed with detecting objects. outputs as below:
n-PC:~$ rosrun object_recognition_core detection -c rospack find object_recognition_tabletop
/conf/detection.object.ros.ork
[ INFO] [1462467175.269440647]: Initialized ROS. node_name: /object_recognition_server
[ INFO] [1462467175.870506603]: System already initialized. node_name: /object_recognition_server
[ INFO] [1462467176.817163521]: System already initialized. node_name: /object_recognition_server
[ INFO] [1462467176.844326959]: Subscribed to topic:/camera/depth_registered/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1462467176.851451746]: Subscribed to topic:/camera/rgb/image_color [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1462467176.867486046]: Subscribed to topic:/camera/depth_registered/image_raw [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1462467176.878455711]: Subscribed to topic:/camera/rgb/camera_info [queue_size: 1][tcp_nodelay: 0]
126 :: 0.5 , 1 , 0.995004 , /base_link , /head_mount_kinect_rgb_optical_frame
[ INFO] [1462467177.544438519]: publishing to topic:/tabletop/clusters
[ INFO] [1462467177.547706797]: publishing to topic:/table_array
Loading model: 8084c0c1974909d0519e05e401006ee2 for object id: 8084c0c1974909d0519e05e401006d09Info, T0: Load /tmp/fileeMr8CE.obj
Info, T0: Found a matching importer for this file format
Info, T0: Import root directory is '/tmp/'
Error, T0: OBJ: No object detected to attach a new mesh instance.
Skipping one or more lines with the same contents
Info, T0: Entering post processing pipeline
Warn, T0: RemoveVCProcess: AI_CONFIG_PP_RVC_FLAGS is zero.
Info, T0: OptimizeGraphProcess finished; Input nodes: 4, Output nodes: 1
Warn, T0: Found 32 degenerated primitives
Info, T0: TriangulateProcess finished. All polygons have been triangulated.
Info, T0: Points: 0, Lines: 1, Triangles: 3, Polygons: 0 (Meshes, X = removed)
Info, T0: JoinVerticesProcess finished | Verts in: 1472 out: 427 | ~71.0%
Error, T0: This algorithm works on triangle meshes only
Info, T0: Cache relevant are 3 meshes (512 faces). Average output ACMR is 0.812500
Info, T0: Leaving post processing pipeline
Traceback (most recent call last):
File "/home/longtan/ork/src/object_recognition_core/apps/detection", line 24, in
run_plasm(args, plasm)
File "/opt/ros/indigo/lib/python2.7/dist-packages/ecto/opts.py", line 85, in run_plasm
sched.execute(options.niter)
ecto.CellException: exception_type CellException
[cell_name] = pipeline2
[cell_type] = ecto::py::BlackBox
[function_name] = process_with_only_these_inputs
[type] = std::runtime_error
[what] = exception_type CellException
[cell_name] = <class 'object_recognition_tabletop.ecto_cells.tabletop_object.ObjectRecognizer'>
[function_name] = process_with_only_these_inputs
[type] = std::bad_alloc
[what] = std::bad_alloc
[when] = While triggering param change callbacks
Thanks in advance.
I noticed that if you remove the tabletop_detector/clusterer dictionary level, it works. E.g.
pipeline1:
type: TabletopTableDetector
module: 'object_recognition_tabletop'
inputs: [source1]
outputs: [sink1]
parameters:
# table detector
min_table_size: 5000
plane_threshold: 0.01
table_cluster_tolerance: 0.01
vertical_frame_id: '/map'
# clusterer
z_crop: 0.25 # The amount to keep in the z direction relative to the coordinate frame defined by the pose (def. 0.5)
z_min: 0.002 # The amount to crop above the plane, in meters (def. 0.0075)
cluster_distance: 0.01 # The maximum distance between a point and the cluster it belongs to (def. 0.02)
min_cluster_size: 300 # Min number of points for a cluster (def. 300)
How can I use the object_recognition_kitchen with Kinetic on Ubuntu 16.04 and Asus Xtion?
I tried install the ORK using binary (sudo apt install ros-kinetic-object-recognition-*) succesfully.
But, it is not include tabletop and has error while running tod.
[Error message]
Mesh and object is founded on CouchDB. I am check it.
byeongkyu@byeongkyu-iMac:$ rosrun object_recognition_core training -c $rospack find object_recognition_tod
/conf/training.ork
Training 1 objects.
computing object_id: 96562faf31b4165800bb3f68d5006aeb
byeongkyu@byeongkyu-iMac:
byeongkyu@byeongkyu-iMac:~$ rosrun object_recognition_core detection -c rospack find object_recognition_tod
/conf/detection.ros.ork
[ INFO] [1472790930.085746566]: Initialized ROS. node_name: /object_recognition_server
[ INFO] [1472790930.458528179]: System already initialized. node_name: /object_recognition_server
[ INFO] [1472790930.863419206]: System already initialized. node_name: /object_recognition_server
[ INFO] [1472790930.871813965]: Subscribed to topic:/camera/depth/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1472790930.876186903]: Subscribed to topic:/camera/depth/image_raw [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1472790930.881230116]: Subscribed to topic:/camera/rgb/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1472790930.885333776]: Subscribed to topic:/camera/rgb/image_raw [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1472790931.620373761]: publishing to topic:/recognized_object_array
Loading models. This may take some time...
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/object_recognition_core/detection", line 24, in
run_plasm(args, plasm)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/ecto/opts.py", line 85, in run_plasm
sched.execute(options.niter)
ecto.CellException: exception_type CellException
[cell_name] = pipeline1
[cell_type] = ecto::py::BlackBox
[function_name] = process_with_only_these_inputs
[type] = std::runtime_error
[what] = exception_type CellException
[cell_name] = Matcher
[function_name] = process_with_only_these_inputs
[type] = std::runtime_error
[what] = Object Not Found : http://localhost:5984/object_recognition/占쏙옙e�
[when] = While triggering param change callbacks
terminate called after throwing an instance of 'boost::exception_detail::clone_implboost::exception_detail::error_info_injector<boost::lock_error >'
what(): boost: mutex lock failed in pthread_mutex_lock: Invalid argument
Aborted (core dumped)
And. I am tried also install using rosinstall. reference [http://wg-perception.github.io/object_recognition_core/install.html#install]
But, it is failed to running tabletop, tod.
[Error Message]
byeongkyu@byeongkyu-iMac:~$ rosrun object_recognition_core detection -c rospack find object_recognition_tabletop
/conf/detection.object.ros.ork
[ INFO] [1472793255.037448839]: Initialized ROS. node_name: /object_recognition_server
[ INFO] [1472793255.416741080]: System already initialized. node_name: /object_recognition_server
[ INFO] [1472793255.777974609]: System already initialized. node_name: /object_recognition_server
[ INFO] [1472793255.792620349]: Subscribed to topic:/camera/depth_registered/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1472793255.796001824]: Subscribed to topic:/camera/rgb/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1472793255.799017281]: Subscribed to topic:/camera/depth_registered/image_raw [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1472793255.802311035]: Subscribed to topic:/camera/rgb/image_rect_color [queue_size: 1][tcp_nodelay: 0]
133 :: 0.5 , 1 , 0.995004 , /base_link , /head_mount_kinect_rgb_optical_frame
[ INFO] [1472793256.744593721]: publishing to topic:/tabletop/clusters
[ INFO] [1472793256.745550347]: publishing to topic:/table_array
Traceback (most recent call last):
File "/home/byeongkyu/catkin_ws/src/ork/ork_core/apps/detection", line 24, in
run_plasm(args, plasm)
File "/home/byeongkyu/catkin_ws/src/ork/ecto/python/ecto/opts.py", line 85, in run_plasm
sched.execute(options.niter)
ecto.CellException: exception_type CellException
[cell_name] = pipeline2
[cell_type] = ecto::py::BlackBox
[function_name] = process_with_only_these_inputs
[type] = std::runtime_error
[what] = exception_type CellException
[cell_name] = <class 'object_recognition_tabletop.ecto_cells.tabletop_object.objectrecognizer'="">
[function_name] = process_with_only_these_inputs
[type] = std::runtime_error
[what] = value type is 0 not 2
[when] = While triggering param change callbacks
terminate called after throwing an instance of 'boost::exception_detail::clone_implboost::exception_detail::error_info_injector<boost::lock_error >'
what(): boost: mutex lock failed in pthread_mutex_lock: Invalid argumen
I have tried to download and build from source the tabletop method and I get this compiling error:
In file included from /home/marti/catkin_ws/src/tabletop/src/object/ObjectRecognizer.cpp:50:0:
/home/marti/catkin_ws/src/tabletop/include/tabletop/object/tabletop_object_detector.h: In member function ‘void tabletop_object_detector::TabletopObjectRecognizer::objectDetection(std::vector<std::vector<cv::Vec<float, 3> > >&, float, bool, std::vector<tabletop_object_detector::TabletopObjectRecognizer::TabletopResult>&)’:
/home/marti/catkin_ws/src/tabletop/include/tabletop/object/tabletop_object_detector.h:115:65: error: no matching function for call to ‘cv::flann::Index::build(cv::Mat&, cv::flann::KDTreeIndexParams)’
search[i].build(features, cv::flann::KDTreeIndexParams());
^
/home/marti/catkin_ws/src/tabletop/include/tabletop/object/tabletop_object_detector.h:115:65: note: candidate is:
In file included from /usr/local/include/opencv2/flann/flann.hpp:51:0,
from /home/marti/catkin_ws/src/tabletop/include/tabletop_object_detector/exhaustive_fit_detector.h:43,
from /home/marti/catkin_ws/src/tabletop/include/tabletop/object/tabletop_object_detector.h:41,
from /home/marti/catkin_ws/src/tabletop/src/object/ObjectRecognizer.cpp:50:
/usr/local/include/opencv2/flann/miniflann.hpp:137:26: note: virtual void cv::flann::Index::build(cv::InputArray, cv::InputArray, const cv::flann::IndexParams&, cvflann::flann_distance_t)
CV_WRAP virtual void build(InputArray wholefeatures, InputArray additionalfeatures, const IndexParams& params, cvflann::flann_distance_t distType=cvflann::FLANN_DIST_L2);
^
/usr/local/include/opencv2/flann/miniflann.hpp:137:26: note: candidate expects 4 arguments, 2 provided
make[2]: *** [tabletop/src/object/CMakeFiles/tabletop_object_ectomodule.dir/ObjectRecognizer.cpp.o] Error 1
make[1]: *** [tabletop/src/object/CMakeFiles/tabletop_object_ectomodule.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j2 -l2" failed
Anyone knows what's happening here?
Thank you in advance!
If I put meshes in the CouchDb that are modeled correctly and look fine in the web display and when checking the temporary STL files, these appear to be loaded into the tabletop ObjectRecognizer upside down. The culprit seems to be the aiProcess_MakeLeftHanded flag in ObjectRecognizer.cpp.
I believe this to be a bug. If it is intended behavior it should at least be documented somewhere.
I have been testing tabletop object recognition successfully using ROS Hydro.
When a detection goal is received the server loads the DB models in few seconds. However, using ROS Groovy the model loading takes more than a minute.
Any idea why this is happening?
Hi,
the tabletop_detection only starts sometimes. In most cases i get the following error:
[ INFO] [1412949051.845788975]: Initialized ROS. node_name: /object_recognition_server
[ INFO] [1412949052.753587964]: System already initialized. node_name: /object_recognition_server
[ INFO] [1412949052.766232429]: Subscribed to topic:/cam3d/depth_registered/camera_info with queue size of 1
[ INFO] [1412949052.768620674]: Subscribed to topic:/cam3d/depth_registered/image_raw with queue size of 1
[ INFO] [1412949052.770816015]: Subscribed to topic:/cam3d/rgb/image_raw with queue size of 1
[ INFO] [1412949052.773266001]: Subscribed to topic:/cam3d/rgb/camera_info with queue size of 1
python: /usr/include/boost/smart_ptr/shared_ptr.hpp:418: T* boost::shared_ptr::operator->() const [with T = const sensor_msgs::Image_std::allocator]: Assertion `px != 0' failed.
Aborted (core dumped)
or:
python: /usr/include/boost/smart_ptr/shared_ptr.hpp:412: boost::shared_ptr::reference boost::shared_ptr::operator*() const [with T = const sensor_msgs::CameraInfo_std::allocator, boost::shared_ptr::reference = const sensor_msgs::CameraInfo_std::allocator&]: Assertion `px != 0' failed.
For getting it to work i have to listen to the pointcloud in rviz and try to start the detection several times. I have no idea why it only works sometimes. Maybe there has to be a delay in the code before the allocation of the kinect because openni2 is publishing the data only if someone subscribes to it.
I am using Ubuntu 12.04 with ROS Hydro and an Asus xtion with openni2.
Compiling on Hydro throws lots of warnings like this:
CMake Warning at object_recognition_tabletop/src/object/CMakeLists.txt:1 (add_library):
Cannot generate a safe runtime search path for target marker_generator
because files in some directories may conflict with libraries in implicit
directories:
runtime library [libpcl_common.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_kdtree.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_octree.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_search.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_io.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_sample_consensus.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_filters.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_visualization.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_outofcore.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_features.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_segmentation.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_people.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_registration.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_recognition.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_keypoints.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_surface.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
runtime library [libpcl_tracking.so.1.7] in /usr/lib may be hidden by files in:
/opt/ros/hydro/lib
Some of these libraries may not be found correctly.
Any idea how to fix this?
Since it looks like a PCL issue I also posted this on ROS Answers: http://answers.ros.org/question/76813/pcl-ros-and-system-install-clashing/
The old household_object_database implementation offered an useful service for retrieving details about a model with a given key. Among this information was the human-readable object name, such as can. See: http://www.ros.org/doc/api/household_objects_database_msgs/html/srv/GetModelDescription.html
What would be the best way to implement this? Where should I start looking?
PS: Remember I am an absolute beginner with ORK and Ecto. I just got the tabletop pipeline running ...
Please split current tabletop package into tabletop and it's rviz plugin so that tabletop can be built and run on robots without the need of rviz package. Thanks!
I am trying to use tabletop object detection using household object database. When I query the object recognition server, I get the following error:
[ERROR] [WallTime: 1402907190.883889] Exception in your execute callback: exception_type CellException
cell_name pipeline2
cell_type ecto::py::BlackBox
function_name process
type std::runtime_error
what exception_type CellException
cell_name <class 'object_recognition_tabletop.ecto_cells.tabletop_object.ObjectRecognizer'>
function_name process
type std::runtime_error
what Function not implemented in the SQL household DB.
when While triggering param change callbacks
Traceback (most recent call last):
File "/opt/ros/indigo/lib/python2.7/dist-packages/actionlib/simple_action_server.py", line 299, in executeLoop
self.execute_callback(goal)
File "/opt/ros/indigo/lib/python2.7/dist-packages/object_recognition_ros/server.py", line 102, in execute
self.plasm.execute(niter=1)
CellException: exception_type CellException
cell_name pipeline2
cell_type ecto::py::BlackBox
function_name process
type std::runtime_error
what exception_type CellException
cell_name <class 'object_recognition_tabletop.ecto_cells.tabletop_object.ObjectRecognizer'>
function_name process
type std::runtime_error
what Function not implemented in the SQL household DB.
when While triggering param change callbacks
On looking into it, I found out that "key" is not set for db because of which this error is thrown in function ObjectDbSqlHousehold::QueryView
I setup the local database after following the instructions given in household_objects_database and can successfully retreive model ids on command line using command "rosservice call /objects_database_node/get_model_list REDUCED_MODEL_SET"
I have provided following details for my database in .ork file (username and password not shown here)
pipeline2:
type: TabletopObjectDetector
module: 'object_recognition_tabletop'
inputs: [source1, pipeline1]
outputs: [sink2]
parameters:
object_ids: 'all'
tabletop_object_ids: 'REDUCED_MODEL_SET'
db:
type: 'ObjectDbSqlHousehold'
host: 'localhost'
port: 5432
user: '_'
password: '_'
name: 'household_objects'
module: 'object_recognition_tabletop'
Are there any other parameters that need to be set?
Hi there,
I receive no error while trying to use tabletop with realsense r200 but it doesn't detect anything in RViz as well. the output from tabletop command in tutorial is this :
rosrun object_recognition_core detection -c `rospack find object_recognition_tabletop`/conf/detection.table.ros.ork
['object_recognition_ros.io']
[ INFO] [1491482471.867810736]: Initialized ROS. node_name: /object_recognition_server
['object_recognition_tabletop']
['object_recognition_tabletop']
[ INFO] [1491482472.139946517]: System already initialized. node_name: /object_recognition_server
[ INFO] [1491482472.145444698]: Subscribed to topic:/camera/depth_registered/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1491482472.148850043]: Subscribed to topic:/camera/rgb/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1491482472.152257610]: Subscribed to topic:/camera/depth_registered/image_rect [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1491482472.156808868]: Subscribed to topic:/camera/rgb/image_rect_color [queue_size: 1][tcp_nodelay: 0]
And it stucks there forever without detecting any planar surface. The config file (detection.table.ros.ork) is changed according to these params :
parameters:
rgb_frame_id: '/camera_rgb_optical_frame'
rgb_image_topic: '/camera/rgb/image_rect_color'
rgb_camera_info: '/camera/rgb/camera_info'
depth_image_topic: '/camera/depth_registered/image_rect'
depth_camera_info: '/camera/depth_registered/camera_info'
Any help is very appreciated
When testing tabletop with my 3D Camera that publishes only the pointcloud image, not the color image, tabletop seems to wait forever. I think the tabletop should work perfectly only with the pointcloud image.
Hi All,
I would like to use another depth sensor instead of kinect, Which parts did I need to change to match my sensor's topics ? like as
rgb_frame_id: camera_rgb_optical_frame
rgb_image_topic: /camera/rgb/image_rect_color
rgb_camera_info: /camera/rgb/camera_info
depth_image_topic: /camera/depth_registered/image_raw
depth_camera_info: /camera/depth_registered/camera_info
Filling a bug report as you told me:
"- the tabletop one requires a DB of objects in the household database type but I could adapt it to any DB actually, please file a bug report there"
I run rosrun object_recognition_core detection -c 'rospack find object_recognition_tabletop'/conf/detection.object.ros.ork
and it gives me this output before simply stopping
/home/<username>/catkin_ws/devel/lib/python2.7/dist-packages/ecto/__init__.py:30: RuntimeWarning: to-Python converter for boost::shared_ptr<ecto::tendril> already registered; second conversion method ignored.
del os_path
/home/<username>/catkin_ws/devel/lib/python2.7/dist-packages/ecto/__init__.py:30: RuntimeWarning: to-Python converter for boost::shared_ptr<ecto::cell> already registered; second conversion method ignored.
del os_path
/home/<username>/catkin_ws/devel/lib/python2.7/dist-packages/ecto/__init__.py:30: RuntimeWarning: to-Python converter for boost::shared_ptr<ecto::py::cellwrap> already registered; second conversion method ignored.
del os_path
[ INFO] [1466695484.352573925]: Initialized ROS. node_name: /object_recognition_server
[ INFO] [1466695484.691118853]: System already initialized. node_name: /object_recognition_server
[ INFO] [1466695485.049567652]: System already initialized. node_name: /object_recognition_server
[ INFO] [1466695485.071410638]: Subscribed to topic:/camera/depth_registered/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1466695485.079224758]: Subscribed to topic:/camera/rgb/image_color [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1466695485.092122438]: Subscribed to topic:/camera/depth_registered/image_raw [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1466695485.100964785]: Subscribed to topic:/camera/rgb/camera_info [queue_size: 1][tcp_nodelay: 0]
^C*** SIGINT received, stopping graph execution.
The full gdb output including a where
command can be found here
Any suggestions for fixes?
For what it's worth, I am using the default conf files.
Ubuntu 14.04.4 LTS
ROS indigo
opencv 2.4.8 (by using command: pkg-config --modversion opencv
) but I can't figure out how to upgrade it. I think I got it through ecto-opencv.
microsoft kinect
anything else needed?
Hi all,
I have a segmentation fault when loading a mesh. It is curious because it does not happen when running the same node but using the ubuntu precompiled package (sudo apt-get ...). This is the trace:
alejandro@alejandro-GP62-2QE:~/workspace/ork$ rosrun object_recognition_core detection -c 'rospack find object_recognition_tabletop'/conf/detection.object.ros.ork
[ INFO] [1465817583.450404204]: Initialized ROS. node_name: /object_recognition_server
[ INFO] [1465817583.838207766]: System already initialized. node_name: /object_recognition_server
[ INFO] [1465817584.275051721]: System already initialized. node_name: /object_recognition_server
[ INFO] [1465817584.289844855]: Subscribed to topic:/camera/rgb/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1465817584.302063695]: Subscribed to topic:/camera/depth/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1465817584.310089472]: Subscribed to topic:/camera/depth/image_raw [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1465817584.318799073]: Subscribed to topic:/camera/rgb/image_raw [queue_size: 1][tcp_nodelay: 0]
126 :: 0.5 , 1 , 0.995004 , /base_link , /head_mount_kinect_rgb_optical_frame
[ INFO] [1465817584.681581790]: publishing to topic:/tabletop/clusters
[ INFO] [1465817584.683827169]: publishing to topic:/table_array
Loading model: 8562ddd6c10ea26b1cdd364cb4000736 for object id: 8562ddd6c10ea26b1cdd364cb40001b4Info, T0: Load /tmp/fileIFuaeW.stl
Info, T0: Found a matching importer for this file format
Info, T0: Import root directory is '/tmp/'
Info, T0: Entering post processing pipeline
Warn, T0: RemoveVCProcess: AI_CONFIG_PP_RVC_FLAGS is zero.
Info, T0: Points: 0, Lines: 0, Triangles: 1, Polygons: 0 (Meshes, X = removed)
Error, T0: FindInvalidDataProcess fails on mesh normals: Found zero-length vector
Info, T0: FindInvalidDataProcess finished. Found issues ...
Info, T0: JoinVerticesProcess finished | Verts in: 1536 out: 258 | ~83.2%
Info, T0: Cache relevant are 1 meshes (512 faces). Average output ACMR is 0.669922
Info, T0: Leaving post processing pipeline
[ INFO] [1465817585.125514837]: publishing to topic:/recognized_object_array
Segmentation fault (core dumped)
Any idea? I have checked the repo is up to date because I have seen similar issues.
Thanks you in advance.
Why?
I followed this tutorial: http://wg-perception.github.io/ork_tutorials/tutorial02/tutorial.html
I added my coke: http://wg-perception.github.io/ork_tutorials/tutorial01/tutorial.html
Table detection works fine: rosrun object_recognition_core detection -c rospack find object_recognition_tabletop /conf/detection.table.ros.ork
But Tabletop detection doesn't work: rosrun object_recognition_core detection -c rospack find object_recognition_tabletop /conf/detection.object.ros.ork
I get the following error:
[ INFO] [1463664713.613309581]: Initialized ROS. node_name: /object_recognition_server
[ INFO] [1463664713.904424586]: System already initialized. node_name: /object_recognition_server
[ INFO] [1463664714.277997809]: System already initialized. node_name: /object_recognition_server
[ INFO] [1463664714.290278174]: Subscribed to topic:/camera/depth_registered/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1463664714.297065062]: Subscribed to topic:/camera/depth_registered/image_raw [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1463664714.301835537]: Subscribed to topic:/camera/rgb/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1463664714.306667893]: Subscribed to topic:/camera/rgb/image_color [queue_size: 1][tcp_nodelay: 0]
126 :: 0.5 , 1 , 0.995004 , /base_link , /head_mount_kinect_rgb_optical_frame
[ INFO] [1463664715.139339447]: publishing to topic:/tabletop/clusters
[ INFO] [1463664715.140241088]: publishing to topic:/table_array
Loading model: 8e7cd947fb153e19c0437207ec001347 for object id: 8e7cd947fb153e19c0437207ec001034Info, T0: Load /tmp/fileoQX8rv.obj
Info, T0: Found a matching importer for this file format
Info, T0: Import root directory is '/tmp/'
Error, T0: OBJ: No object detected to attach a new mesh instance.
Skipping one or more lines with the same contents
Info, T0: Entering post processing pipeline
Warn, T0: RemoveVCProcess: AI_CONFIG_PP_RVC_FLAGS is zero.
Info, T0: OptimizeGraphProcess finished; Input nodes: 4, Output nodes: 1
Info, T0: Points: 0, Lines: 0, Triangles: 3, Polygons: 0 (Meshes, X = removed)
Info, T0: JoinVerticesProcess finished | Verts in: 1536 out: 427 | ~72.2%
Info, T0: Cache relevant are 3 meshes (512 faces). Average output ACMR is 0.878906
Info, T0: Leaving post processing pipeline
Segmentation fault (core dumped)
I am using the latest version of ORK, Ros Indigo, Ubuntu 14.04 and OpenCV 2.4.11.
Thank you for your help.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.