1 #ifndef KINEMATICS_ROSROBOTDRIVERHANDLER_HPP 2 #define KINEMATICS_ROSROBOTDRIVERHANDLER_HPP 5 #include <unordered_map> 8 #include "std_msgs/UInt64.h" 9 #include "RobotDriverHandler.hpp" 10 #include <Kinematics/Matrix.hpp> 66 std::vector<Matrix<double, 5, 1>>
get_path()
const noexcept;
108 void sub_move_complete(
const std_msgs::UInt64::ConstPtr&
id);
113 std::function<void()> move_complete_handler;
123 ros::Subscriber id_subscriber;
128 ros::ServiceClient driver_stop;
133 ros::ServiceClient driver_add;
138 std::atomic<Matrix<double, 5, 1>> current_arm_state;
143 std::vector<std::uint64_t> path_ids;
148 std::uint64_t last_id_complete = std::numeric_limits<std::uint64_t>::max();
154 std::vector<Matrix<double, 5, 1>> path;
std::uint64_t get_offset_current_move() const
Get the offset of the last move that was completed by the robotarm.
RobotDriverHandler()
Constructor.
void stop()
Stop the robot arm.
RobotDriverHandler & operator=(const RobotDriverHandler &rdh)=delete
Copy assignment operator, deleted.
void set_move_complete_handler(const std::function< void()> &handler)
Set the move complete handler.
virtual ~RobotDriverHandler()=default
Destructor.
Concrete handle on the robot using the ROS interface.
Definition: RobotDriverHandler.hpp:19
Matrix< double, 5, 1 > get_arm_state() const noexcept
Get the current arm position.
std::vector< Matrix< double, 5, 1 > > get_path() const noexcept
Get the path the robot arm is moving to.
void move(const std::vector< Matrix< double, 5, 1 >> &path, double speed)
Move the robot arm along a path.
Create a matrix with numerical values.
Definition: Matrix.hpp:22