Arm works
Added gravity and calibrated it. Terifying...
Change-Id: I70babb1cd3b83ddd7a81f06fb2a75cefd55bcdb8
diff --git a/y2018/control_loops/superstructure/arm/graph.h b/y2018/control_loops/superstructure/arm/graph.h
index 1c2f9e5..d295cfc 100644
--- a/y2018/control_loops/superstructure/arm/graph.h
+++ b/y2018/control_loops/superstructure/arm/graph.h
@@ -33,7 +33,7 @@
public:
QueueEntry(T *value) : value_(value) { value_->entry_ = this; }
- QueueEntry(QueueEntry &&o) : value_(o.value_) {
+ QueueEntry(QueueEntry &&o) : value_(::std::move(o.value_)) {
if (value_) {
value_->entry_ = this;
}
@@ -133,7 +133,14 @@
bool operator<(const HalfEdge &o) const { return dest < o.dest; }
};
- SearchGraph(size_t num_vertexes, const std::vector<Edge> &edges);
+ SearchGraph(size_t num_vertexes, std::vector<Edge> &&edges);
+ SearchGraph(size_t num_vertexes, ::std::initializer_list<Edge> edges);
+ SearchGraph(SearchGraph &&o)
+ : goal_vertex_(o.goal_vertex_),
+ vertexes_(::std::move(o.vertexes_)),
+ edges_(::std::move(o.edges_)),
+ vertex_heap_(::std::move(o.vertex_heap_)) {}
+
~SearchGraph();
// Set the goal vertex.
@@ -150,6 +157,8 @@
size_t num_vertexes() const { return vertexes_.size(); }
+ const std::vector<Edge> &edges() const { return edges_; }
+
private:
size_t goal_vertex_ = std::numeric_limits<size_t>::max();
struct Vertex {
@@ -169,6 +178,8 @@
std::vector<Edge> edges_;
IntrusivePriorityQueue<Vertex> vertex_heap_;
+
+ size_t last_searched_vertex_ = 1;
};
} // namespace arm