This is an example to show how to get data from the hand, read the position for a specific joint and send this as the target to another joint. More...
#include <ros/ros.h>#include <iostream>#include <cmath>#include <stdexcept>#include "duration.h"#include <sys/time.h>#include "ros/time.h"#include <cstdio>#include <sstream>#include <log4cxx/logger.h>#include "ros/console.h"#include <boost/static_assert.hpp>#include <cassert>#include <stdint.h>#include <assert.h>#include <stddef.h>#include <string>#include "ros/assert.h"#include <vector>#include <map>#include <set>#include <list>#include <boost/shared_ptr.hpp>#include <boost/weak_ptr.hpp>#include <boost/function.hpp>#include "exceptions.h"#include <boost/shared_array.hpp>#include "ros/types.h"#include "ros/forwards.h"#include "ros/common.h"#include "ros/macros.h"#include <string.h>#include <boost/array.hpp>#include "serialized_message.h"#include "message_forward.h"#include <boost/utility/enable_if.hpp>#include <boost/type_traits/remove_const.hpp>#include <boost/type_traits/remove_reference.hpp>#include "message_traits.h"#include "ros/exception.h"#include <boost/call_traits.hpp>#include <boost/mpl/and.hpp>#include <boost/mpl/or.hpp>#include <boost/mpl/not.hpp>#include <cstring>#include <boost/bind.hpp>#include <typeinfo>#include <ros/message.h>#include <boost/type_traits/is_void.hpp>#include <boost/type_traits/is_base_of.hpp>#include <boost/type_traits/is_const.hpp>#include <boost/type_traits/add_const.hpp>#include <boost/make_shared.hpp>#include <ros/static_assert.h>#include "ros/message_traits.h"#include "ros/builtin_message_traits.h"#include "ros/serialization.h"#include "ros/message_event.h"#include "forwards.h"#include "timer_options.h"#include "wall_timer_options.h"#include "ros/service_traits.h"#include <boost/lexical_cast.hpp>#include "subscription_callback_helper.h"#include "ros/spinner.h"#include <time.h>#include "ros/publisher.h"#include <boost/utility.hpp>#include "ros/service_server.h"#include "ros/subscriber.h"#include "ros/node_handle.h"#include "ros/init.h"#include "XmlRpcValue.h"#include "node_handle.h"#include "ros/names.h"#include <ostream>#include "ros/message_operations.h"#include <sr_robot_msgs/joint.h>
Go to the source code of this file.
Functions | |
| void | callback (const sr_robot_msgs::joints_dataConstPtr &msg) |
| int | main (int argc, char **argv) |
Variables | |
| std::string | child_name = "MFJ3" |
| the name of the child joint to link to the parent | |
| std::string | parent_name = "FFJ3" |
| the name of the parent joint | |
| ros::Publisher | pub |
| ros::Subscriber | sub |
This is an example to show how to get data from the hand, read the position for a specific joint and send this as the target to another joint.
Copyright 2011 Shadow Robot Company Ltd.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
Copyright 2011 Shadow Robot Company Ltd.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
To test this program, just start the hand, rviz visualizer, the control GUI and this example (in 4 different consoles):
roslaunch sr_hand srh_motor.launch roslaunch sr_hand rviz_motor.launch rosrun sr_control_gui __init__.py rosrun sr_hand link_joints
If you move the joint slider for FFJ3, then MFJ3 will move as well.
Definition in file link_joints.cpp.
| void callback | ( | const sr_robot_msgs::joints_dataConstPtr & | msg | ) |
The callback function is called each time a message is received on the topic /srh/shadowhand_data
| msg | message of type sr_hand::joints_data |
if it's the parent joint, read the target, and send it to the child.
Definition at line 80 of file link_joints.cpp.
| int main | ( | int | argc, | |
| char ** | argv | |||
| ) |
The main: initialise a ros node, a subscriber and a publisher
| argc | ||
| argv |
init the subscriber and subscribe to the topic /srh/shadowhand_data, using the callback function callback()
init the publisher on the topic /srh/sendupdate publishing messages of the type sr_robot_msgs::sendupdate.
Definition at line 135 of file link_joints.cpp.
| std::string child_name = "MFJ3" |
the name of the child joint to link to the parent
Definition at line 67 of file link_joints.cpp.
| std::string parent_name = "FFJ3" |
the name of the parent joint
Definition at line 65 of file link_joints.cpp.
| ros::Publisher pub |
Definition at line 72 of file link_joints.cpp.
| ros::Subscriber sub |
Definition at line 70 of file link_joints.cpp.