11 #include <sensor_msgs/JointState.h>
44 return m_pantilt != NULL;
52 void SetGoal(
const sensor_msgs::JointState::ConstPtr& msg);
61 PTU46_Node::PTU46_Node(ros::NodeHandle& node_handle)
62 :m_pantilt(NULL), m_node(node_handle) {
81 <sensor_msgs::JointState>(
"state", 1);
96 ROS_INFO(
"Attempting to connect to %s...", port.c_str());
98 ROS_ASSERT(m_pantilt != NULL);
99 if (! m_pantilt->isOpen()) {
100 ROS_ERROR(
"Could not connect to pan/tilt unit [%s]", port.c_str());
104 ROS_INFO(
"Connected!");
121 <sensor_msgs::JointState>(
"state", 1);
124 m_joint_sub =
m_node.subscribe
142 bool set_pan_pos=
false, set_tilt_pos=
false, set_pan_speed=
false, set_tilt_speed=
false;
143 double panpos, tiltpos, panspeed, tiltspeed;
145 for (
size_t i=0; i<msg->name.size(); i++)
147 if (msg->name[i]==ros::names::remap(
"pan"))
149 if (msg->position.size()>i)
151 panpos=msg->position[i];
155 if (msg->velocity.size()>i)
157 panspeed=msg->velocity[i];
158 set_pan_speed =
true;
163 if (msg->name[i]==ros::names::remap(
"tilt"))
165 if (msg->position.size()>i)
167 tiltpos=msg->position[i];
171 if (msg->velocity.size()>i)
173 tiltspeed=msg->velocity[i];
174 set_tilt_speed =
true;
209 sensor_msgs::JointState joint_state;
211 joint_state.header.stamp = ros::Time::now();
212 joint_state.name.push_back(ros::names::remap(
"pan"));
213 joint_state.position.push_back(pan);
214 joint_state.velocity.push_back(panspeed);
215 joint_state.name.push_back(ros::names::remap(
"tilt"));
216 joint_state.position.push_back(tilt);
217 joint_state.velocity.push_back(tiltspeed);
224 int main(
int argc,
char** argv) {
225 ros::init(argc, argv,
"ptu");
226 ros::NodeHandle n(
"~");
237 ros::Rate loop_rate(hz);
239 while (ros::ok() && ptu_node.
ok()) {
250 if (! ptu_node.
ok()) {
251 ROS_ERROR(
"pan/tilt unit disconncted prematurely");
bool SetSpeed(char type, float speed)
PTU46 Pan Tilt Unit Driver Copyright (C) 2009 Erik Karulf (erik@cse.wustl.edu)
void SetGoal(const sensor_msgs::JointState::ConstPtr &msg)
ros::Subscriber m_joint_sub
float GetPosition(char type)
bool SetPosition(char type, float pos, bool Block=false)
ros::Publisher m_joint_pub
ptu control header. Defines commands for ptu control.
#define PTU46_DEFAULT_PORT
#define PTU46_DEFAULT_BAUD
float GetSpeed(char type)
int main(int argc, char **argv)