trajopt
 All Classes Namespaces Files Functions Variables Typedefs Pages
kinematic_terms.hpp
1 #pragma once
2 
3 #include "sco/modeling.hpp"
4 #include "sco/modeling_utils.hpp"
5 #include "sco/sco_fwd.hpp"
6 #include <Eigen/Core>
7 #include "trajopt/common.hpp"
8 #include <openrave/openrave.h>
9 namespace trajopt {
10 
11 using namespace sco;
12 typedef BasicArray<Var> VarArray;
13 
14 #if 0
15 void makeTrajVariablesAndBounds(int n_steps, const RobotAndDOF& manip, OptProb& prob_out, VarArray& vars_out);
16 
17 class FKFunc {
18 public:
19  virtual OpenRAVE::Transform operator()(const VectorXd& x) const = 0;
20  virtual ~FKFunc() {}
21 };
22 
23 class FKPositionJacobian {
24 public:
25  virtual Eigen::MatrixXd operator()(const VectorXd& x) const = 0;
26  virtual ~FKPositionJacobian() {}
27 };
28 #endif
29 
30 
32  OR::Transform pose_inv_;
33  ConfigurationPtr manip_;
34  OR::KinBody::LinkPtr link_;
35  CartPoseErrCalculator(const OR::Transform& pose, ConfigurationPtr manip, OR::KinBody::LinkPtr link) :
36  pose_inv_(pose.inverse()),
37  manip_(manip),
38  link_(link) {}
39  VectorXd operator()(const VectorXd& dof_vals) const;
40 };
41 
42 struct CartPoseErrorPlotter : public Plotter {
43  boost::shared_ptr<void> m_calc; //actually points to a CartPoseErrCalculator = CartPoseCost::f_
44  VarVector m_vars;
45  CartPoseErrorPlotter(boost::shared_ptr<void> calc, const VarVector& vars) : m_calc(calc), m_vars(vars) {}
46  void Plot(const DblVec& x, OR::EnvironmentBase& env, std::vector<OR::GraphHandlePtr>& handles);
47 };
48 
49 
51  ConfigurationPtr manip_;
52  KinBody::LinkPtr link_;
53  double limit_;
54  CartVelJacCalculator(ConfigurationPtr manip, KinBody::LinkPtr link, double limit) :
55  manip_(manip), link_(link), limit_(limit) {}
56 
57  MatrixXd operator()(const VectorXd& dof_vals) const;
58 };
59 
61  ConfigurationPtr manip_;
62  KinBody::LinkPtr link_;
63  double limit_;
64  CartVelCalculator(ConfigurationPtr manip, KinBody::LinkPtr link, double limit) :
65  manip_(manip), link_(link), limit_(limit) {}
66 
67  VectorXd operator()(const VectorXd& dof_vals) const;
68 };
69 
70 #if 0
71 class CartPoseCost : public CostFromErrFunc {
72 public:
73  CartPoseCost(const VarVector& vars, const OR::Transform& pose, RobotAndDOFPtr manip, KinBody::LinkPtr link, const VectorXd& coeffs);
74 };
75 
76 class CartPoseConstraint : public ConstraintFromFunc {
77 public:
78  CartPoseConstraint(const VarVector& vars, const OR::Transform& pose, RobotAndDOFPtr manip, KinBody::LinkPtr link, const VectorXd& coeffs);
79 };
80 
81 class CartVelConstraint : public ConstraintFromFunc {
82 public:
83  CartVelConstraint(const VarVector& step0vars, const VarVector& step1vars, RobotAndDOFPtr manip, KinBody::LinkPtr link, double distlimit);
84 };
85 #endif
86 
87 
88 
89 }