diff --git a/hola.cpp b/hola.cpp deleted file mode 100644 index bbfe06905be402540d92005a21d3358396b54d57..0000000000000000000000000000000000000000 --- a/hola.cpp +++ /dev/null @@ -1,3 +0,0 @@ -int main () -{ -} diff --git a/iri_foot/CMakeLists.txt b/iri_foot/CMakeLists.txt index 7debd05c994ce942db0b12e1b9e6c0c448290f7a..adb0c516946f0fe5f55917a811ce42a05c1eda09 100644 --- a/iri_foot/CMakeLists.txt +++ b/iri_foot/CMakeLists.txt @@ -6,7 +6,7 @@ find_package(catkin REQUIRED) # ******************************************************************** # Add catkin additional components here # ******************************************************************** -find_package(catkin REQUIRED COMPONENTS iri_base_algorithm) +find_package(catkin REQUIRED COMPONENTS iri_base_algorithm std_msgs tf) ## System dependencies are found with CMake's conventions # find_package(Boost REQUIRED COMPONENTS system) @@ -93,7 +93,8 @@ target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}) # ******************************************************************** # Add message headers dependencies # ******************************************************************** -# add_dependencies(${PROJECT_NAME} <msg_package_name>_generate_messages_cpp) +#add_dependencies(${PROJECT_NAME} <msg_package_name>_generate_messages_cpp) +add_dependencies(${PROJECT_NAME} std_msgs_generate_messages_cpp) # ******************************************************************** # Add dynamic reconfigure dependencies # ******************************************************************** diff --git a/iri_foot/CMakeLists.txt~ b/iri_foot/CMakeLists.txt~ new file mode 100644 index 0000000000000000000000000000000000000000..94c17f7e3adf8339dc6fe4e1ac9c33d9176321d9 --- /dev/null +++ b/iri_foot/CMakeLists.txt~ @@ -0,0 +1,100 @@ +cmake_minimum_required(VERSION 2.8.3) +project(iri_foot) + +## Find catkin macros and libraries +find_package(catkin REQUIRED) +# ******************************************************************** +# Add catkin additional components here +# ******************************************************************** +find_package(catkin REQUIRED COMPONENTS iri_base_algorithm std_msgs tf) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + +# ******************************************************************** +# Add system and labrobotica dependencies here +# ******************************************************************** +# find_package(<dependency> REQUIRED) + +# ******************************************************************** +# Add topic, service and action definition here +# ******************************************************************** +## 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 +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs # Or other packages containing msgs +# ) + +# ******************************************************************** +# Add the dynamic reconfigure file +# ******************************************************************** +generate_dynamic_reconfigure_options(cfg/Foot.cfg) + +# ******************************************************************** +# Add run time dependencies here +# ******************************************************************** +catkin_package( +# INCLUDE_DIRS +# LIBRARIES +# ******************************************************************** +# Add ROS and IRI ROS run time dependencies +# ******************************************************************** + CATKIN_DEPENDS iri_base_algorithm +# ******************************************************************** +# Add system and labrobotica run time dependencies here +# ******************************************************************** +# DEPENDS +) + +########### +## Build ## +########### + +# ******************************************************************** +# Add the include directories +# ******************************************************************** +include_directories(include) +include_directories(${catkin_INCLUDE_DIRS}) +# include_directories(${<dependency>_INCLUDE_DIR}) + +## Declare a cpp library +# add_library(${PROJECT_NAME} <list of source files>) + +## Declare a cpp executable +add_executable(${PROJECT_NAME} src/foot_alg.cpp src/foot_alg_node.cpp) + +# ******************************************************************** +# Add the libraries +# ******************************************************************** +target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}) +# target_link_libraries(${PROJECT_NAME} ${<dependency>_LIBRARY}) + +# ******************************************************************** +# Add message headers dependencies +# ******************************************************************** +add_dependencies(${PROJECT_NAME} std_msgs_generate_messages_cpp) +# ******************************************************************** +# Add dynamic reconfigure dependencies +# ******************************************************************** +add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS}) diff --git a/iri_foot/include/foot_alg.h b/iri_foot/include/foot_alg.h index 8e630b72f3924473bb6172fa2c31c6ebd421666d..3b408508b29de640b603dc1c99edd2f544a12e09 100644 --- a/iri_foot/include/foot_alg.h +++ b/iri_foot/include/foot_alg.h @@ -26,6 +26,7 @@ #define _foot_alg_h_ #include <iri_foot/FootConfig.h> +#include <tf/transform_listener.h> //include foot_alg main library @@ -126,7 +127,7 @@ class FootAlgorithm * */ ~FootAlgorithm(void); - double angle(tf::Vector p1, tf::Vector p2, tf::Vector p3, tf::Vector p4); + double angle(tf::Vector3 p1, tf::Vector3 p2, tf::Vector3 p3, tf::Vector3 p4); }; #endif diff --git a/iri_foot/include/foot_alg.h~ b/iri_foot/include/foot_alg.h~ index f5ca2c0a2b204dfe8641a3a1a97f446b8ea4c1b1..bc34b98336767796f035cb29c0302c843de2bbc8 100644 --- a/iri_foot/include/foot_alg.h~ +++ b/iri_foot/include/foot_alg.h~ @@ -26,6 +26,7 @@ #define _foot_alg_h_ #include <iri_foot/FootConfig.h> +#include <tf/transform_listener.h> //include foot_alg main library @@ -126,7 +127,7 @@ class FootAlgorithm * */ ~FootAlgorithm(void); - double angle(tf::Vector ); + double angle(tf::Vector p1, tf::Vector p2, tf::Vector p3, tf::Vector p4); }; #endif diff --git a/iri_foot/include/foot_alg_node.h b/iri_foot/include/foot_alg_node.h index 6584c2180e672dc668ca7d7769c94dfae460504f..a7524c8f1f41eb1456231236443192bf0c641f37 100644 --- a/iri_foot/include/foot_alg_node.h +++ b/iri_foot/include/foot_alg_node.h @@ -31,6 +31,7 @@ // [publisher subscriber headers] #include <std_msgs/String.h> +#include <std_msgs/Float64.h> // [service client headers] @@ -54,6 +55,9 @@ class FootAlgNode : public algorithm_base::IriBaseAlgorithm<FootAlgorithm> tf::Vector3 rightknee; // [publisher attributes] + ros::Publisher myfeet_publisher_; + std_msgs::String myfeet_String_msg_; + // [subscriber attributes] diff --git a/iri_foot/include/foot_alg_node.h~ b/iri_foot/include/foot_alg_node.h~ index a6ef3613b012e45c6b9873cfb82262ee066908fc..6584c2180e672dc668ca7d7769c94dfae460504f 100644 --- a/iri_foot/include/foot_alg_node.h~ +++ b/iri_foot/include/foot_alg_node.h~ @@ -44,7 +44,10 @@ class FootAlgNode : public algorithm_base::IriBaseAlgorithm<FootAlgorithm> { private: tf::TransformListener listener; - + tf::StampedTransform transform1; + tf::StampedTransform transform2; + tf::StampedTransform transform3; + tf::StampedTransform transform4; tf::Vector3 rightfoot; tf::Vector3 leftfoot; tf::Vector3 leftknee; diff --git a/iri_foot/src/foot_alg.cpp b/iri_foot/src/foot_alg.cpp index 1393fb350f85f5076c96b35e7c984e69a61e38c4..a2a7bbabfa15a5bfbd0c5627092c4d89abe281d1 100644 --- a/iri_foot/src/foot_alg.cpp +++ b/iri_foot/src/foot_alg.cpp @@ -25,14 +25,13 @@ void FootAlgorithm::config_update(Config& config, uint32_t level) double FootAlgorithm::angle(tf::Vector3 p1, tf::Vector3 p2, tf::Vector3 p3, tf::Vector3 p4) { - const double PI = 3.14159265359. - double numleft = (p1.getX() * p2.getX()) + (p1.getY() * p2.getY()) + (p1.getZ() * p2.getZ()); - double numright = (p3.getX() * p4.getX()) + (p3.getY() * p4.getY()) + (p3.getZ() * p4.getZ()); - double denleft = sqrt((p1.getX() * p1.getX()) + (p1.getY() * p1.getY()) + (p1.getZ() * p1.getZ())) * sqrt((p2.getX() * p2.getX()) + (p2.getY() * p2.getY()) + (p2.getZ() * p2.getZ())); - double denright = sqrt((p3.getX() * p3.getX()) + (p3.getY() * p3.getY()) + (p3.getZ() * p3.getZ())) * sqrt((p4.getX() * p4.getX()) + (p4.getY() * p4.getY()) + (p4.getZ() * p4.getZ())); - double angleft = acos (numleft/denleft); - double angright = acos (numright/denright); - - + double numleft = p2.getZ() - p1.getZ(); + double numright = p4.getZ() - p3.getZ(); + double denleft = p2.getY() - p1.getY(); + double denright = p4.getY() - p3.getY(); + double angleft = atan (numleft/denleft); + double angright = atan (numright/denright); + return angleft; + return angright; } diff --git a/iri_foot/src/foot_alg.cpp~ b/iri_foot/src/foot_alg.cpp~ index 33f5f0701681aee724b4fec586afa14f4fdf22fa..a2a7bbabfa15a5bfbd0c5627092c4d89abe281d1 100644 --- a/iri_foot/src/foot_alg.cpp~ +++ b/iri_foot/src/foot_alg.cpp~ @@ -25,13 +25,13 @@ void FootAlgorithm::config_update(Config& config, uint32_t level) double FootAlgorithm::angle(tf::Vector3 p1, tf::Vector3 p2, tf::Vector3 p3, tf::Vector3 p4) { - const double PI = 3.14159265359. - double numleft = (p1.getX() * p2.getX()) + (p1.getY() * p2.getY()) + (p1.getZ() * p2.getZ()); - double numright = (p3.getX() * p4.getX()) + (p3.getY() * p4.getY()) + (p3.getZ() * p4.getZ()); - double denleft = sqrt((p1.getX() * p1.getX()) + (p1.getY() * p1.getY()) + (p1.getZ() * p1.getZ())) * sqrt((p2.getX() * p2.getX()) + (p2.getY() * p2.getY()) + (p2.getZ() * p2.getZ())); - double denright = sqrt((p3.getX() * p3.getX()) + (p3.getY() * p3.getY()) + (p3.getZ() * p3.getZ())) * sqrt((p4.getX() * p4.getX()) + (p4.getY() * p4.getY()) + (p4.getZ() * p4.getZ())); - double angleft = acos (numleft/denleft); - double angright = acos (numright/denright); - + double numleft = p2.getZ() - p1.getZ(); + double numright = p4.getZ() - p3.getZ(); + double denleft = p2.getY() - p1.getY(); + double denright = p4.getY() - p3.getY(); + double angleft = atan (numleft/denleft); + double angright = atan (numright/denright); + return angleft; + return angright; } diff --git a/iri_foot/src/foot_alg_node.cpp b/iri_foot/src/foot_alg_node.cpp index 96dadf9d8167a094293250d2fea219585b40ecdf..6f916cdc43c8802cc1543346055d1d006d274cc1 100644 --- a/iri_foot/src/foot_alg_node.cpp +++ b/iri_foot/src/foot_alg_node.cpp @@ -1,4 +1,6 @@ #include "foot_alg_node.h" +using namespace std; +#include <string> FootAlgNode::FootAlgNode(void) : algorithm_base::IriBaseAlgorithm<FootAlgorithm>() @@ -7,6 +9,7 @@ FootAlgNode::FootAlgNode(void) : //this->loop_rate_ = 2;//in [Hz] // [init publishers] + this->myfeet_publisher_ = this->public_node_handle_.advertise<std_msgs::String>("myfeet", 10); // [init subscribers] @@ -26,13 +29,60 @@ FootAlgNode::~FootAlgNode(void) void FootAlgNode::mainNodeThread(void) { +string my_var = ""; +try{ + ros::Time now = ros::Time::now(); + ros::Duration five_seconds = ros::Duration(5.0); + + string child_leftfoot("/brix_2/user_1/left_foot"); + string child_leftknee("/brix_2/user_1/left_knee"); + string child_rightfoot("/brix_2/user_1/right_foot"); + string child_rightknee("/brix_2/user_1/right_knee"); + string parent_cameraframe("/brix_2_camera_frame"); + + //left_foot + + listener.waitForTransform(parent_cameraframe, child_leftfoot, now, five_seconds); + listener.lookupTransform(parent_cameraframe, child_leftfoot, now, transform1); + leftfoot = transform1.getOrigin(); + + //left_knee + + listener.waitForTransform(parent_cameraframe, child_leftknee, now, five_seconds); + listener.lookupTransform(parent_cameraframe, child_leftknee, now, transform2); + leftknee = trasnform2.getOrigin(); + + //right_foot + + listener.waitForTransform(parent_cameraframe, child_rightfoot, now, five_seconds); + listener.lookupTransform(parent_cameraframe, child_rightfoot, now, transform3); + rightfoot = trasnform3.getOrigin(); + + //right_knee + + listener.waitForTransform(parent_cameraframe, child_rightknee, now, five_seconds); + listener.lookupTransform(parent_cameraframe, child_rightknee, now, transform4); + rightknee = trasnform4.getOrigin(); + + + + + +} + // [fill msg structures] + // Initialize the topic message structure + this->myfeet_String_msg_.data = my_var; + // [fill srv structure and make request to the server] // [fill action structure and make request to the action server] // [publish messages] + // Uncomment the following line to publish the topic message + this->myfeet_publisher_.publish(this->myfeet_String_msg_); + } /* [subscriber callbacks] */ diff --git a/iri_foot/src/foot_alg_node.cpp~ b/iri_foot/src/foot_alg_node.cpp~ index 96dadf9d8167a094293250d2fea219585b40ecdf..6f916cdc43c8802cc1543346055d1d006d274cc1 100644 --- a/iri_foot/src/foot_alg_node.cpp~ +++ b/iri_foot/src/foot_alg_node.cpp~ @@ -1,4 +1,6 @@ #include "foot_alg_node.h" +using namespace std; +#include <string> FootAlgNode::FootAlgNode(void) : algorithm_base::IriBaseAlgorithm<FootAlgorithm>() @@ -7,6 +9,7 @@ FootAlgNode::FootAlgNode(void) : //this->loop_rate_ = 2;//in [Hz] // [init publishers] + this->myfeet_publisher_ = this->public_node_handle_.advertise<std_msgs::String>("myfeet", 10); // [init subscribers] @@ -26,13 +29,60 @@ FootAlgNode::~FootAlgNode(void) void FootAlgNode::mainNodeThread(void) { +string my_var = ""; +try{ + ros::Time now = ros::Time::now(); + ros::Duration five_seconds = ros::Duration(5.0); + + string child_leftfoot("/brix_2/user_1/left_foot"); + string child_leftknee("/brix_2/user_1/left_knee"); + string child_rightfoot("/brix_2/user_1/right_foot"); + string child_rightknee("/brix_2/user_1/right_knee"); + string parent_cameraframe("/brix_2_camera_frame"); + + //left_foot + + listener.waitForTransform(parent_cameraframe, child_leftfoot, now, five_seconds); + listener.lookupTransform(parent_cameraframe, child_leftfoot, now, transform1); + leftfoot = transform1.getOrigin(); + + //left_knee + + listener.waitForTransform(parent_cameraframe, child_leftknee, now, five_seconds); + listener.lookupTransform(parent_cameraframe, child_leftknee, now, transform2); + leftknee = trasnform2.getOrigin(); + + //right_foot + + listener.waitForTransform(parent_cameraframe, child_rightfoot, now, five_seconds); + listener.lookupTransform(parent_cameraframe, child_rightfoot, now, transform3); + rightfoot = trasnform3.getOrigin(); + + //right_knee + + listener.waitForTransform(parent_cameraframe, child_rightknee, now, five_seconds); + listener.lookupTransform(parent_cameraframe, child_rightknee, now, transform4); + rightknee = trasnform4.getOrigin(); + + + + + +} + // [fill msg structures] + // Initialize the topic message structure + this->myfeet_String_msg_.data = my_var; + // [fill srv structure and make request to the server] // [fill action structure and make request to the action server] // [publish messages] + // Uncomment the following line to publish the topic message + this->myfeet_publisher_.publish(this->myfeet_String_msg_); + } /* [subscriber callbacks] */