davetcoleman / clam

ROS software for controlling 7-DOF low-cost robotic manipulator
http://correll.cs.colorado.edu/clam/
31 stars 58 forks source link

ClamGripperCommandAction.h not available #2

Closed rojas70 closed 10 years ago

rojas70 commented 10 years ago

There are several files that #include ClamGripperCommandAction.h.

For example: /clam_controller/src/clam_gripper_controller_test.cpp

This file is nowhere to be found. In clam_msgs, we only have the following files: clam_msgs->

Please include the .h and .cpp files.

davetcoleman commented 10 years ago

ClamGripperCommandAction.h is generated automatically by catkin, or at least it should be. Try running catkin_make several times.

rojas70 commented 10 years ago

Dave,

Thanks for your time. This is a great project. I think people all around the world, can use it to get their own arm and try all kinds of manipulation work. I am using it in China to help 2nd and 3rd year undergraduate students learn about middleware and manipulation.

About the . It must not have generated yet, because there are a number of other errors.

  1. There was a pcl headers that was deprecated that I fixed.
  2. There seems to be an issue with virtual functions in the "clam_moveit_ikfast_plugin". I suspect, this is not a real error either: kinematics_base exists in ./include/moveit/kinematics_base/kinematics_base.h and seems fine. The compiler error is below:
In file included from /opt/ros/hydro/include/class_loader/class_loader_core.h:39:0,
                 from /opt/ros/hydro/include/class_loader/class_loader_register_macro.h:33,
                 from /opt/ros/hydro/include/class_loader/class_loader.h:39,
                 from /opt/ros/hydro/include/pluginlib/class_list_macros.h:40,
                 from /home/vmrguser/ros/hydro/clamArm_ws/src/clam/clam_moveit_ikfast_plugin/src/clam_arm_ikfast_moveit_plugin.cpp:828:
/opt/ros/hydro/include/class_loader/meta_object.h: In member function ‘B* class_loader::class_loader_private::MetaObject<C, B>::create() const [with C = ikfast_kinematics_plugin::IKFastKinematicsPlugin, B = kinematics::KinematicsBase]’:
/home/vmrguser/ros/hydro/clamArm_ws/src/clam/clam_moveit_ikfast_plugin/src/clam_arm_ikfast_moveit_plugin.cpp:829:101:   instantiated from here
/opt/ros/hydro/include/class_loader/meta_object.h:193:17: error: cannot allocate an object of abstract type ‘ikfast_kinematics_plugin::IKFastKinematicsPlugin’
/home/vmrguser/ros/hydro/clamArm_ws/src/clam/clam_moveit_ikfast_plugin/src/clam_arm_ikfast_moveit_plugin.cpp:65:7: note:   because the following virtual functions are pure within ‘ikfast_kinematics_plugin::IKFastKinematicsPlugin’:
/opt/ros/hydro/include/moveit/kinematics_base/kinematics_base.h:89:16: note:    virtual bool kinematics::KinematicsBase::getPositionIK(const Pose&, const std::vector<double>&, std::vector<double>&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
  1. The real culprit seems in to be in the RobotState class. MoveIt upgraded their code. I think you point to this in https://github.com/ros-planning/moveit_pr2/issues/27. Someone offered a solution in https://groups.google.com/forum/#!topic/moveit-users/2e6MFeCdNIk, but it is not clear to me how to address the change of JointStateGroup...
davetcoleman commented 10 years ago

Yea, I haven't really updated the code since Aug 25, 2013... anything that has changed then is likely broken. I am now working on other robots so can't put time into maintaining this one (for free), but I'll happily take any pull requests.

rojas70 commented 10 years ago

I will try.

I went back to try to work with the Groovy version. There were two errors. I could fix one, not yet the other. Would like to ask for some quick feedback.

  1. Fixed Error: In clam_moveit_controller_manager.cpp::MoveItControllerManager::ControllerState there is no longer a "_loaded" data member. Commented out this member.
  2. Pending: In clam_arm_ikfast_moveit_plugin, the compiler cannot see that the IKFastKinematicsPlugin class inherits from KinematicsBase as in:
class IKFastKinematicsPlugin : public kinematics::KinematicsBase

I wonder if this has to do with the PLUGIN_EXPORT_CLASS. But all details seem to be working fine.

PLUGINLIB_EXPORT_CLASS(ikfast_kinematics_plugin::IKFastKinematicsPlugin, kinematics::KinematicsBase);

This is my current compiler error:

>>$ catkin_make
Base path: /home/vmrguser/ros/groovy/clamArm_ws
Source space: /home/vmrguser/ros/groovy/clamArm_ws/src
Build space: /home/vmrguser/ros/groovy/clamArm_ws/build
Devel space: /home/vmrguser/ros/groovy/clamArm_ws/devel
Install space: /home/vmrguser/ros/groovy/clamArm_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/vmrguser/ros/groovy/clamArm_ws/build"
####
####
#### Running command: "make -j8 -l8" in "/home/vmrguser/ros/groovy/clamArm_ws/build"
####
[  0%] [  0%] [  0%] [  0%] [  0%] Built target geometry_msgs_generate_messages_py
Built target std_msgs_generate_messages_py
Built target trajectory_msgs_generate_messages_cpp
Built target trajectory_msgs_generate_messages_py
Built target actionlib_msgs_generate_messages_py
[  0%] [  0%] [  0%] [  0%] Building CXX object clam/clam_moveit_ikfast_plugin/CMakeFiles/clam_moveit_ikfast_kinematics_plugin.dir/src/clam_arm_ikfast_moveit_plugin.cpp.o
[  0%] Built target trajectory_msgs_generate_messages_lisp
Built target std_msgs_generate_messages_cpp
Built target geometry_msgs_generate_messages_cpp
Built target actionlib_msgs_generate_messages_cpp
[  0%] Built target block_grasp_generator_grasp_filter
[  0%] [  1%] Built target geometry_msgs_generate_messages_lisp
Built target block_grasp_generator_block_grasp_generator
[  1%] Built target std_msgs_generate_messages_lisp
[  1%] Built target actionlib_msgs_generate_messages_lisp
[  5%] [  6%] Built target flexiport
Built target manual_square_calibrate
[  9%] Built target GbxUtilAcfr
[ 14%] [ 14%] Built target dynamixel_hardware_interface_generate_messages_cpp
Built target GbxLockFileAcfr
[ 15%] Built target calibrate_kinect_checkerboard
[ 21%] [ 27%] Built target dynamixel_hardware_interface_generate_messages_py
Built target dynamixel_hardware_interface_generate_messages_lisp
[ 28%] [ 28%] [ 28%] Built target joint_state_aggregator
Built target clam_gripper_controller_test
Built target block_manipulation_logic
[ 29%] Built target clam_moveit_controller_manager
[ 29%] Built target block_perception_server
[ 45%] Built target clam_msgs_generate_messages_py
[ 46%] Built target point_cloud_lab
[ 46%] Built target point_cloud_lab_template
[ 62%] [ 62%] [ 78%] Built target clam_msgs_generate_messages_cpp
Built target clam_msgs_generate_messages_lisp
Built target grasp_filter_test
[ 79%] [ 80%] Built target block_grasp_generator_test
[ 80%] [ 81%] Built target porttoport
Built target serial_example
Built target tcp_example
[ 82%] [ 82%] [ 83%] Built target udp_example
Built target locktest
[ 83%] Built target GbxSerialAcfr
Built target mathtest
[ 84%] [ 84%] Built target trivialstatustest
Built target tokenisetest
[ 84%] Built target trivialtracertest
[ 84%] Built target dynamixel_hardware_interface_gencpp
[ 84%] [ 84%] [ 84%] Built target clam_msgs_generate_messages
Built target dynamixel_hardware_interface_generate_messages
Built target serialechotest
[ 86%] [ 86%] Built target hokuyo_aist
[ 87%] Built target serialloopbacktest
Built target clam_msgs_gencpp
[ 88%] Built target GbxGarminAcfr
[ 89%] Built target GbxNovatelUtilAcfr
[ 90%] [ 90%] [ 90%] [ 91%] [ 92%] Built target hokuyo_aist_getid
[ 92%] Built target hokuyo_aist_example
Built target hokuyo_aist_py
Built target dynamixel_hardware_interface
Built target sim_controller_manager
Built target sim_dynamixel_controllers
[ 92%] [ 92%] Built target gbxgarminacfrtest
Built target crc32test
[ 93%] Built target clam_gripper_controller
[ 95%] [ 95%] [ 95%] Built target GbxNovatelAcfr
Built target controller_manager
Built target dynamixel_io
[ 97%] Built target dynamixel_controllers
[ 98%] Built target dynamixeliopy
[100%] Built target gbxnovatelacfrtest
In file included from /opt/ros/groovy/include/class_loader/class_loader_core.h:39:0,
                 from /opt/ros/groovy/include/class_loader/class_loader_register_macro.h:33,
                 from /opt/ros/groovy/include/class_loader/class_loader.h:39,
                 from /opt/ros/groovy/include/pluginlib/class_list_macros.h:40,
                 from /home/vmrguser/ros/groovy/clamArm_ws/src/clam/clam_moveit_ikfast_plugin/src/clam_arm_ikfast_moveit_plugin.cpp:828:
/opt/ros/groovy/include/class_loader/meta_object.h: In member function ‘B* class_loader::class_loader_private::MetaObject<C, B>::create() const [with C = ikfast_kinematics_plugin::IKFastKinematicsPlugin, B = kinematics::KinematicsBase]’:
/home/vmrguser/ros/groovy/clamArm_ws/src/clam/clam_moveit_ikfast_plugin/src/clam_arm_ikfast_moveit_plugin.cpp:829:101:   instantiated from here
/opt/ros/groovy/include/class_loader/meta_object.h:193:17: error: cannot allocate an object of abstract type ‘ikfast_kinematics_plugin::IKFastKinematicsPlugin’
/home/vmrguser/ros/groovy/clamArm_ws/src/clam/clam_moveit_ikfast_plugin/src/clam_arm_ikfast_moveit_plugin.cpp:65:7: note:   because the following virtual functions are pure within ‘ikfast_kinematics_plugin::IKFastKinematicsPlugin’:
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:90:16: note:   virtual bool kinematics::KinematicsBase::getPositionIK(const Pose&, const std::vector<double>&, std::vector<double>&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:108:16: note:  virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector<double>&, double, std::vector<double>&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:128:16: note:  virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector<double>&, double, const std::vector<double>&, std::vector<double>&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:150:16: note:  virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector<double>&, double, std::vector<double>&, const IKCallbackFn&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:173:16: note:  virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector<double>&, double, const std::vector<double>&, std::vector<double>&, const IKCallbackFn&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
make[2]: *** [clam/clam_moveit_ikfast_plugin/CMakeFiles/clam_moveit_ikfast_kinematics_plugin.dir/src/clam_arm_ikfast_moveit_plugin.cpp.o] Error 1
make[1]: *** [clam/clam_moveit_ikfast_plugin/CMakeFiles/clam_moveit_ikfast_kinematics_plugin.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed

Multiple attempts at catkin_make won't solve this.

davetcoleman commented 10 years ago

Last August I updated the Hydro branch to work with the latest changes, but the Groovy branch is likely much older and out of date.

rojas70 commented 10 years ago

The errors I saw in Groovy seemed easier to fix than those in Hydro, but I may just be scratching the surface. Thanks

davetcoleman commented 10 years ago

I have tested all the software and now remember the status. There are very big changes between Groovy and Hydro in MoveIt!, this ClamArm software has already been ported to Hydro so reverting back to Groovy would require going into the commit log and finding the right now. Do not try to use the lastest commit with Hydro!

I just updated all the installation documentation for Hydro/Indigo, and I also did a lot of code changes. There is no longer a dependency on block_grasp_generator, fyi. See the above issue for more details.