diff --git a/pose_estimation/CMakeLists.txt b/pose_estimation/CMakeLists.txt index 96c349c05b2ff5c362ccc389d703befaa5599e9e..9020edfb32943dc4a908c7ebb7fbd1c095513f7b 100644 --- a/pose_estimation/CMakeLists.txt +++ b/pose_estimation/CMakeLists.txt @@ -1,113 +1,38 @@ cmake_minimum_required(VERSION 3.0.2) project(pose_estimation) -## Compile as C++11, supported in ROS Kinetic and newer -# add_compile_options(-std=c++11) - -## Find catkin macros and libraries -## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) -## is used, also find other catkin packages find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs open_manipulator_msgs + geometry_msgs + message_generation ) -## System dependencies are found with CMake's conventions -# find_package(Boost REQUIRED COMPONENTS system) - - -## Uncomment this if the package has a setup.py. This macro ensures -## modules and global scripts declared therein get installed -## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html -# catkin_python_setup() - ################################################ ## Declare ROS messages, services and actions ## ################################################ -## To declare and build messages, services or actions from within this -## package, follow these steps: -## * Let MSG_DEP_SET be the set of packages whose message types you use in -## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). -## * In the file package.xml: -## * add a build_depend tag for "message_generation" -## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET -## * If MSG_DEP_SET isn't empty the following dependency has been pulled in -## but can be declared for certainty nonetheless: -## * add a exec_depend tag for "message_runtime" -## * In this file (CMakeLists.txt): -## * add "message_generation" and every package in MSG_DEP_SET to -## find_package(catkin REQUIRED COMPONENTS ...) -## * add "message_runtime" and every package in MSG_DEP_SET to -## catkin_package(CATKIN_DEPENDS ...) -## * uncomment the add_*_files sections below as needed -## and list every .msg/.srv/.action file to be processed -## * uncomment the generate_messages entry below -## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) - ## Generate messages in the 'msg' folder -# add_message_files( -# FILES -# Message1.msg -# Message2.msg -# ) - -## Generate services in the 'srv' folder -# add_service_files( -# FILES -# Service1.srv -# Service2.srv -# ) - -## Generate actions in the 'action' folder -# add_action_files( -# FILES -# Action1.action -# Action2.action -# ) +add_message_files( + FILES + # Keypoint.msg + # Keypoints.msg + SphericalCoordinates.msg +) ## Generate added messages and services with any dependencies listed here -# generate_messages( -# DEPENDENCIES -# std_msgs -# ) - -################################################ -## Declare ROS dynamic reconfigure parameters ## -################################################ - -## To declare and build dynamic reconfigure parameters within this -## package, follow these steps: -## * In the file package.xml: -## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" -## * In this file (CMakeLists.txt): -## * add "dynamic_reconfigure" to -## find_package(catkin REQUIRED COMPONENTS ...) -## * uncomment the "generate_dynamic_reconfigure_options" section below -## and list every .cfg file to be processed - -## Generate dynamic reconfigure parameters in the 'cfg' folder -# generate_dynamic_reconfigure_options( -# cfg/DynReconf1.cfg -# cfg/DynReconf2.cfg -# ) +generate_messages( + DEPENDENCIES + std_msgs +) ################################### ## catkin specific configuration ## ################################### -## The catkin_package macro generates cmake config files for your package -## Declare things to be passed to dependent projects -## INCLUDE_DIRS: uncomment this if your package contains header files -## LIBRARIES: libraries you create in this project that dependent projects also need -## CATKIN_DEPENDS: catkin_packages dependent projects also need -## DEPENDS: system dependencies of this project that dependent projects also need catkin_package( -# INCLUDE_DIRS include -# LIBRARIES pose_estimation -# CATKIN_DEPENDS roscpp rospy std_msgs -# DEPENDS system_lib + CATKIN_DEPENDS message_runtime ) ########### @@ -117,91 +42,16 @@ catkin_package( ## Specify additional locations of header files ## Your package locations should be listed before other locations include_directories( -# include ${catkin_INCLUDE_DIRS} ) -## Declare a C++ library -# add_library(${PROJECT_NAME} -# src/${PROJECT_NAME}/pose_estimation.cpp -# ) - -## Add cmake target dependencies of the library -## as an example, code may need to be generated before libraries -## either from message generation or dynamic reconfigure -# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) - -## Declare a C++ executable -## With catkin_make all packages are built within a single CMake context -## The recommended prefix ensures that target names across packages don't collide -# add_executable(${PROJECT_NAME}_node src/pose_estimation_node.cpp) - -## Rename C++ executable without prefix -## The above recommended prefix causes long target names, the following renames the -## target back to the shorter version for ease of user use -## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" -# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") - -## Add cmake target dependencies of the executable -## same as for the library above -# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) - -## Specify libraries to link a library or executable target against -# target_link_libraries(${PROJECT_NAME}_node -# ${catkin_LIBRARIES} -# ) ############# ## Install ## ############# - -# all install targets should use catkin DESTINATION variables -# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html - ## Mark executable scripts (Python etc.) for installation ## in contrast to setup.py, you can choose the destination catkin_install_python(PROGRAMS - scripts/pose_estimation.py + scripts/pose_estimation_control.py scripts/arm_keypoint_capture.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -) - -## Mark executables for installation -## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html -# install(TARGETS ${PROJECT_NAME}_node -# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -# ) - -## Mark libraries for installation -## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html -# install(TARGETS ${PROJECT_NAME} -# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} -# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} -# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} -# ) - -## Mark cpp header files for installation -# install(DIRECTORY include/${PROJECT_NAME}/ -# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} -# FILES_MATCHING PATTERN "*.h" -# PATTERN ".svn" EXCLUDE -# ) - -## Mark other files for installation (e.g. launch and bag files, etc.) -# install(FILES -# # myfile1 -# # myfile2 -# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} -# ) - -############# -## Testing ## -############# - -## Add gtest based cpp test target and link libraries -# catkin_add_gtest(${PROJECT_NAME}-test test/test_pose_estimation.cpp) -# if(TARGET ${PROJECT_NAME}-test) -# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) -# endif() - -## Add folders to be run by python nosetests -# catkin_add_nosetests(test) +) \ No newline at end of file diff --git a/pose_estimation/launch/pose_estimation.xml b/pose_estimation/launch/pose_estimation.xml deleted file mode 100644 index 7423c692f081cd93c3c857a18657683f16291be0..0000000000000000000000000000000000000000 --- a/pose_estimation/launch/pose_estimation.xml +++ /dev/null @@ -1,3 +0,0 @@ -<!-- <launch> - <node pkg="pose_estimation" exec="turtlesim_node" name="sim" namespace="turtlesim1"/> -</launch> --> diff --git a/pose_estimation/package.xml b/pose_estimation/package.xml index b943ba4cb16a26c4359bb33d6b3737474416014a..c99581201b0d6eb4873cf45fd609f36fe1ffcead 100644 --- a/pose_estimation/package.xml +++ b/pose_estimation/package.xml @@ -51,16 +51,22 @@ <buildtool_depend>catkin</buildtool_depend> <build_depend>roscpp</build_depend> <build_depend>rospy</build_depend> - <build_depend>std_msgs</build_depend> <build_export_depend>roscpp</build_export_depend> <build_export_depend>rospy</build_export_depend> - <build_export_depend>std_msgs</build_export_depend> <exec_depend>roscpp</exec_depend> <exec_depend>rospy</exec_depend> + + <!-- Messages used--> <exec_depend>std_msgs</exec_depend> + <build_depend>std_msgs</build_depend> + <build_export_depend>std_msgs</build_export_depend> <build_depend>open_manipulator_msgs</build_depend> <exec_depend>open_manipulator_msgs</exec_depend> - + + <!-- Message Generation --> + <build_depend>message_generation</build_depend> + <exec_depend>message_runtime</exec_depend> + <!-- The export tag contains other, unspecified, tags --> <export> <!-- Other tools can request additional information be placed here --> diff --git a/pose_estimation/scripts/pose_estimation.py b/pose_estimation/scripts/pose_estimation.py deleted file mode 100755 index a7d19577cd3f27bf24216d8f7afcda364ca5d118..0000000000000000000000000000000000000000 --- a/pose_estimation/scripts/pose_estimation.py +++ /dev/null @@ -1,44 +0,0 @@ - -import rospy - -from open_manipulator_msgs.srv import SetJointPosition -from open_manipulator_msgs.msg import JointPosition - -# Define available joint names -joint_names = ["joint1", "joint2", "joint3", "joint4"] - -# Define starting joint positions -starting_joint_angles = [0.0, 1.2, -1.4, -.5] - -# TODO: SetJointPosition or SetKinematicPose (https://www.theconstructsim.com/programming-a-service-client-for-robotis-open-manipulator/) -### https://github.com/ROBOTIS-GIT/open_manipulator_perceptions/blob/master/open_manipulator_pick_and_place/src/open_manipulator_pick_and_place.cpp -def joint_position(joint_names, joint_angles, path_time): - print("Connecting...") - rospy.wait_for_service('goal_joint_space_path') - print("Connected to 'open_manipulator_msgs/SetJointPosition' service") - try: - set_joint_positions = rospy.ServiceProxy('goal_joint_space_path', SetJointPosition) - - joint_position = JointPosition() - joint_position.joint_name = joint_names - joint_position.position = joint_angles - - resp = set_joint_positions(joint_position=joint_position, path_time=path_time) - - print(resp) - - except rospy.ServiceException as e: - print("Service call failed %s"%e) - -def pose_estimation(): - rospy.init_node('pose_estimation') - - # Move the arm to the starting position - joint_position(joint_names, starting_joint_angles, 2.) - - -if __name__ == '__main__': - try: - pose_estimation() - except rospy.ROSInterruptException: - pass \ No newline at end of file