Program Listing for File roboplan_ik_marker.hpp
↰ Return to documentation for file (include/roboplan_ros_visualization/roboplan_ik_marker.hpp)
#pragma once
#include <functional>
#include <memory>
#include <optional>
#include <string>
#include <vector>
#include <Eigen/Dense>
#include <geometry_msgs/msg/pose.hpp>
#include <roboplan/core/scene.hpp>
#include <roboplan_simple_ik/simple_ik.hpp>
#include <visualization_msgs/msg/interactive_marker.hpp>
#include <visualization_msgs/msg/interactive_marker_control.hpp>
#include <visualization_msgs/msg/interactive_marker_feedback.hpp>
#include <visualization_msgs/msg/marker.hpp>
namespace roboplan_ros_visualization {
using IkSolveFunction = std::function<std::optional<Eigen::VectorXd>(
const Eigen::Matrix4d& target_pose, const Eigen::VectorXd& seed_configuration)>;
class RoboplanIKMarker {
public:
RoboplanIKMarker(std::shared_ptr<const roboplan::Scene> scene, const std::string& base_link,
const std::string& tip_link, IkSolveFunction ik_solve_fn);
visualization_msgs::msg::InteractiveMarker construct_imarker() const;
std::optional<Eigen::VectorXd>
process_feedback(const visualization_msgs::msg::InteractiveMarkerFeedback& feedback);
void set_seed_configuration(const Eigen::VectorXd& q);
private:
std::shared_ptr<const roboplan::Scene> scene_;
std::string base_link_;
std::string tip_link_;
IkSolveFunction ik_solve_fn_;
geometry_msgs::msg::Pose target_pose_;
Eigen::VectorXd seed_configuration_;
};
} // namespace roboplan_ros_visualization