ROS-UVS  1.0.0
A Minimalistic ROS Library for Visual Constraint Minimization through Uncalibrated Visual Servoing
 All Classes Files Functions Variables
visual_servoing.h
Go to the documentation of this file.
1 #ifndef VISUAL_SERVOING_H
2 #define VISUAL_SERVOING_H
3 
4 #include <ros/ros.h>
5 #include <Eigen/Core>
6 #include <Eigen/SVD>
7 
10 #include "visual_servoing/Matrix.h"
11 
12 // Image Based Visual Servoing
13 
14 class IBVS {
15  public:
17  double learn_rate;
18 
20 
21  Eigen::VectorXd step(double lambda=1);
22  Eigen::VectorXd do_step(double lambda=1);
23 
24  void broyden_update();
25 
26  void update_jacobian(double delta, size_t num_joints);
27 
28  void converge(double timeout, double lambda);
29  void step_converge(int steps, double lambda);
30 
31  private:
32  // Broyden update parameters
33  int broyden_thr;
34  Eigen::VectorXd prev_error;
35  Eigen::VectorXd prev_jnt_state;
36  Eigen::VectorXd prev_eef_pos;
37 
38  RobotController* robot;
39  TrackerManager* trackers;
40 
41  Eigen::MatrixXd jacobian;
42  Eigen::MatrixXd jacobian_inv;
43  ros::Publisher jacobian_pub;
44 
45  void publish_jacobian();
46  float get_cond(Eigen::MatrixXd& m);
47 };
48 
49 #endif // VISUAL_SERVOING_H
bool broyden_updates
Definition: visual_servoing.h:16
Eigen::VectorXd step(double lambda=1)
Definition: visual_servoing.cpp:100
Definition: robot_controller.h:6
Definition: visual_servoing.h:14
double learn_rate
Definition: visual_servoing.h:17
IBVS(RobotController *rc, TrackerManager *tm)
Definition: visual_servoing.cpp:4
void update_jacobian(double delta, size_t num_joints)
Definition: visual_servoing.cpp:60
void converge(double timeout, double lambda)
Definition: visual_servoing.cpp:112
void step_converge(int steps, double lambda)
Definition: visual_servoing.cpp:124
Eigen::VectorXd do_step(double lambda=1)
Definition: visual_servoing.cpp:105
void broyden_update()
Definition: visual_servoing.cpp:11
Definition: tracker_manager.h:10