Viam C++ SDK current
Loading...
Searching...
No Matches
gantry.hpp
Go to the documentation of this file.
1
4#pragma once
5
6#include <viam/sdk/common/kinematics.hpp>
7#include <viam/sdk/resource/stoppable.hpp>
8
9namespace viam {
10namespace sdk {
11
13
21class Gantry : public Component, public Stoppable {
22 public:
29
33 };
34
36 inline std::vector<double> get_position() {
37 return get_position({});
38 }
39
42 virtual std::vector<double> get_position(const ProtoStruct& extra) = 0;
43
48 inline void move_to_position(const std::vector<movement_coordinate>& coordinates) {
50 }
51
57 virtual void move_to_position(const std::vector<movement_coordinate>& coordinates,
58 const ProtoStruct& extra) = 0;
59
63 inline bool home() {
64 return home({});
65 }
66
71 virtual bool home(const ProtoStruct& extra) = 0;
72
74 inline std::vector<double> get_lengths() {
75 return get_lengths({});
76 }
77
80 virtual std::vector<double> get_lengths(const ProtoStruct& extra) = 0;
81
83 virtual bool is_moving() = 0;
84
88 virtual ProtoStruct do_command(const ProtoStruct& command) = 0;
89
91 inline std::vector<GeometryConfig> get_geometries() {
92 return get_geometries({});
93 }
94
97 virtual std::vector<GeometryConfig> get_geometries(const ProtoStruct& extra) = 0;
98
103 virtual ::viam::sdk::KinematicsData get_kinematics(const ProtoStruct& extra) = 0;
104
108 inline ::viam::sdk::KinematicsData get_kinematics() {
109 return get_kinematics({});
110 }
111
112 API api() const override;
113
114 protected:
115 using Component::Component;
116};
117
118template <>
120 static API api();
121};
122
123} // namespace sdk
124} // namespace viam
Definition resource_api.hpp:21
Definition component.hpp:10
A Gantry represents a physical gantry and can be used for controlling gantries of N axes.
Definition gantry.hpp:21
virtual::viam::sdk::KinematicsData get_kinematics(const ProtoStruct &extra)=0
Get the kinematics data associated with the gantry.
virtual void move_to_position(const std::vector< movement_coordinate > &coordinates, const ProtoStruct &extra)=0
Move the axes of the gantry to the desired positions (mm) at the requested speeds (mm/sec).
virtual ProtoStruct do_command(const ProtoStruct &command)=0
Send/receive arbitrary commands to the resource.
virtual bool home(const ProtoStruct &extra)=0
Run the homing sequence of the gantry to re-calibrate the axes with respect to the limit switches.
std::vector< double > get_position()
Get the positions of the axes of the gantry in millimeters.
Definition gantry.hpp:36
virtual bool is_moving()=0
Reports if the gantry is in motion.
bool home()
Run the homing sequence of the gantry to re-calibrate the axes with respect to the limit switches.
Definition gantry.hpp:63
virtual std::vector< double > get_position(const ProtoStruct &extra)=0
Get the positions of the axes of the gantry in millimeters.
virtual std::vector< GeometryConfig > get_geometries(const ProtoStruct &extra)=0
Returns GeometryConfigs associated with the calling gantry.
void move_to_position(const std::vector< movement_coordinate > &coordinates)
Move the axes of the gantry to the desired positions (mm) at the requested speeds (mm/sec).
Definition gantry.hpp:48
std::vector< double > get_lengths()
Get the lengths of the axes of the gantry in millimeters.
Definition gantry.hpp:74
inline ::viam::sdk::KinematicsData get_kinematics()
Get the kinematics data associated with the gantry.
Definition gantry.hpp:108
virtual std::vector< double > get_lengths(const ProtoStruct &extra)=0
Get the lengths of the axes of the gantry in millimeters.
API api() const override
Returns the API associated with a particular resource.
std::vector< GeometryConfig > get_geometries()
Returns GeometryConfigs associated with the calling gantry.
Definition gantry.hpp:91
Definition stoppable.hpp:8
Definition resource_api.hpp:46
A coordinate for moving a single axis of a gantry to a desired position at a requested speed.
Definition gantry.hpp:26
double speed_mm_per_sec
A speed in millimeters per second for the gantry to move at respective to the axis.
Definition gantry.hpp:32
double position_mm
A position for the axis of the gantry to move to, in millimeters.
Definition gantry.hpp:28
Definition pose.hpp:20