Merge "Changing 2017 constants from aos::Once to absl::call_once()"
diff --git a/aos/ipc_lib/BUILD b/aos/ipc_lib/BUILD
index 1e8b118..684620a 100644
--- a/aos/ipc_lib/BUILD
+++ b/aos/ipc_lib/BUILD
@@ -13,7 +13,7 @@
],
deps = [
"//aos:macros",
- "//aos:once",
+ "@com_google_absl//absl/base",
"//aos/logging",
"//aos/util:compiler_memory_barrier",
],
diff --git a/aos/ipc_lib/aos_sync.cc b/aos/ipc_lib/aos_sync.cc
index 101a189..3962467 100644
--- a/aos/ipc_lib/aos_sync.cc
+++ b/aos/ipc_lib/aos_sync.cc
@@ -29,7 +29,7 @@
#include "aos/logging/logging.h"
#include "aos/macros.h"
#include "aos/util/compiler_memory_barrier.h"
-#include "aos/once.h"
+#include "absl/base/call_once.h"
using ::aos::linux_code::ipc_lib::FutexAccessorObserver;
@@ -377,11 +377,10 @@
my_tid = 0;
}
-void *InstallAtforkHook() {
+void InstallAtforkHook() {
if (pthread_atfork(NULL, NULL, atfork_child) != 0) {
AOS_PLOG(FATAL, "pthread_atfork(NULL, NULL, %p) failed", atfork_child);
}
- return nullptr;
}
// This gets called to set everything up in a new thread by get_tid().
@@ -601,8 +600,8 @@
my_tid = do_get_tid();
- static ::aos::Once<void> atfork_hook_installed(InstallAtforkHook);
- atfork_hook_installed.Get();
+ static absl::once_flag once_;
+ absl::call_once(once_, InstallAtforkHook);
my_robust_list::Init();
}
diff --git a/tsconfig.json b/tsconfig.json
index 91093d3..d330268 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,7 +2,9 @@
"compilerOptions": {
"experimentalDecorators": true,
"strict": true,
- "noImplicitAny": false
+ "noImplicitAny": false,
+ "target": "es6",
+ "lib": ["es6", "dom"]
},
"bazelOptions": {
"workspaceName": "971-Robot-Code"
diff --git a/y2018/BUILD b/y2018/BUILD
index fc2aae8..d7cc2fd 100644
--- a/y2018/BUILD
+++ b/y2018/BUILD
@@ -49,7 +49,6 @@
],
visibility = ["//visibility:public"],
deps = [
- "//aos:once",
"//aos/logging",
"//aos/mutex",
"//aos/network:team_number",
diff --git a/y2018/constants.cc b/y2018/constants.cc
index 97a62a1..ea21a5b 100644
--- a/y2018/constants.cc
+++ b/y2018/constants.cc
@@ -13,7 +13,6 @@
#include "aos/logging/logging.h"
#include "aos/mutex/mutex.h"
#include "aos/network/team_number.h"
-#include "aos/once.h"
#include "y2018/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
#include "y2018/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
diff --git a/y2018_bot3/BUILD b/y2018_bot3/BUILD
deleted file mode 100644
index 49ae5a5..0000000
--- a/y2018_bot3/BUILD
+++ /dev/null
@@ -1,5 +0,0 @@
-py_library(
- name = "python_init",
- srcs = ["__init__.py"],
- visibility = ["//visibility:public"],
-)
diff --git a/y2018_bot3/__init__.py b/y2018_bot3/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/y2018_bot3/__init__.py
+++ /dev/null
diff --git a/y2018_bot3/control_loops/BUILD b/y2018_bot3/control_loops/BUILD
deleted file mode 100644
index da1a4aa..0000000
--- a/y2018_bot3/control_loops/BUILD
+++ /dev/null
@@ -1,6 +0,0 @@
-py_library(
- name = "python_init",
- srcs = ["__init__.py"],
- visibility = ["//visibility:public"],
- deps = ["//y2018_bot3:python_init"],
-)
diff --git a/y2018_bot3/control_loops/__init__.py b/y2018_bot3/control_loops/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/y2018_bot3/control_loops/__init__.py
+++ /dev/null
diff --git a/y2018_bot3/control_loops/drivetrain/BUILD b/y2018_bot3/control_loops/drivetrain/BUILD
deleted file mode 100644
index 62484c0..0000000
--- a/y2018_bot3/control_loops/drivetrain/BUILD
+++ /dev/null
@@ -1,80 +0,0 @@
-load("//aos/build:queues.bzl", "queue_library")
-
-genrule(
- name = "genrule_drivetrain",
- outs = [
- "drivetrain_dog_motor_plant.h",
- "drivetrain_dog_motor_plant.cc",
- "kalman_drivetrain_motor_plant.h",
- "kalman_drivetrain_motor_plant.cc",
- ],
- cmd = "$(location //y2018_bot3/control_loops/python:drivetrain) $(OUTS)",
- tools = [
- "//y2018_bot3/control_loops/python:drivetrain",
- ],
-)
-
-genrule(
- name = "genrule_polydrivetrain",
- outs = [
- "polydrivetrain_dog_motor_plant.h",
- "polydrivetrain_dog_motor_plant.cc",
- "polydrivetrain_cim_plant.h",
- "polydrivetrain_cim_plant.cc",
- "hybrid_velocity_drivetrain.h",
- "hybrid_velocity_drivetrain.cc",
- ],
- cmd = "$(location //y2018_bot3/control_loops/python:polydrivetrain) $(OUTS)",
- tools = [
- "//y2018_bot3/control_loops/python:polydrivetrain",
- ],
-)
-
-cc_library(
- name = "polydrivetrain_plants",
- srcs = [
- "drivetrain_dog_motor_plant.cc",
- "hybrid_velocity_drivetrain.cc",
- "kalman_drivetrain_motor_plant.cc",
- "polydrivetrain_dog_motor_plant.cc",
- ],
- hdrs = [
- "drivetrain_dog_motor_plant.h",
- "hybrid_velocity_drivetrain.h",
- "kalman_drivetrain_motor_plant.h",
- "polydrivetrain_dog_motor_plant.h",
- ],
- deps = [
- "//frc971/control_loops:hybrid_state_feedback_loop",
- "//frc971/control_loops:state_feedback_loop",
- ],
-)
-
-cc_library(
- name = "drivetrain_base",
- srcs = [
- "drivetrain_base.cc",
- ],
- hdrs = [
- "drivetrain_base.h",
- ],
- deps = [
- ":polydrivetrain_plants",
- "//frc971:shifter_hall_effect",
- "//frc971/control_loops/drivetrain:drivetrain_config",
- ],
-)
-
-cc_binary(
- name = "drivetrain",
- srcs = [
- "drivetrain_main.cc",
- ],
- visibility = ["//visibility:public"],
- deps = [
- ":drivetrain_base",
- "//aos:init",
- "//aos/events:shm-event-loop",
- "//frc971/control_loops/drivetrain:drivetrain_lib",
- ],
-)
diff --git a/y2018_bot3/control_loops/drivetrain/drivetrain_base.cc b/y2018_bot3/control_loops/drivetrain/drivetrain_base.cc
deleted file mode 100644
index 23b0705..0000000
--- a/y2018_bot3/control_loops/drivetrain/drivetrain_base.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "y2018_bot3/control_loops/drivetrain/drivetrain_base.h"
-
-#include <chrono>
-
-#include "frc971/control_loops/drivetrain/drivetrain_config.h"
-#include "frc971/control_loops/state_feedback_loop.h"
-#include "y2018_bot3/control_loops/drivetrain/hybrid_velocity_drivetrain.h"
-#include "y2018_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
-#include "y2018_bot3/control_loops/drivetrain/kalman_drivetrain_motor_plant.h"
-#include "y2018_bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
-
-using ::frc971::control_loops::drivetrain::DrivetrainConfig;
-
-namespace chrono = ::std::chrono;
-
-namespace y2018_bot3 {
-namespace control_loops {
-namespace drivetrain {
-
-namespace {
-const ::frc971::constants::ShifterHallEffect kThreeStateDriveShifter{
- 0.0, 0.0, 0.25, 0.75};
-} // namespace
-
-const DrivetrainConfig<double> &GetDrivetrainConfig() {
- static DrivetrainConfig<double> kDrivetrainConfig{
- ::frc971::control_loops::drivetrain::ShifterType::SIMPLE_SHIFTER,
- ::frc971::control_loops::drivetrain::LoopType::CLOSED_LOOP,
- ::frc971::control_loops::drivetrain::GyroType::SPARTAN_GYRO,
- ::frc971::control_loops::drivetrain::IMUType::IMU_X,
-
- drivetrain::MakeDrivetrainLoop,
- drivetrain::MakeVelocityDrivetrainLoop,
- drivetrain::MakeKFDrivetrainLoop,
- drivetrain::MakeHybridVelocityDrivetrainLoop,
-
- chrono::duration_cast<chrono::nanoseconds>(
- chrono::duration<double>(drivetrain::kDt)),
- drivetrain::kRobotRadius, drivetrain::kWheelRadius, drivetrain::kV,
-
- drivetrain::kHighGearRatio, drivetrain::kHighGearRatio,
- drivetrain::kJ,
- drivetrain::kMass,
- kThreeStateDriveShifter, kThreeStateDriveShifter,
- // TODO(sabina): confirm once robot is built
- true /* default_high_gear */, 0 /* down_offset */,
- 0.4 /* wheel_non_linearity */, 1.0 /* quickturn_wheel_multiplier */,
- 1.0 /* wheel_multiplier */,
- };
-
- return kDrivetrainConfig;
-};
-
-} // namespace drivetrain
-} // namespace control_loops
-} // namespace y2018_bot3
diff --git a/y2018_bot3/control_loops/drivetrain/drivetrain_base.h b/y2018_bot3/control_loops/drivetrain/drivetrain_base.h
deleted file mode 100644
index 2368c96..0000000
--- a/y2018_bot3/control_loops/drivetrain/drivetrain_base.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef Y2018_BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_BASE_H_
-#define Y2018_BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_BASE_H_
-
-#include "frc971/control_loops/drivetrain/drivetrain_config.h"
-
-namespace y2018_bot3 {
-namespace control_loops {
-namespace drivetrain {
-
-const ::frc971::control_loops::drivetrain::DrivetrainConfig<double>
- &GetDrivetrainConfig();
-
-} // namespace drivetrain
-} // namespace control_loops
-} // namespace y2018_bot3
-
-#endif // Y2018_BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_BASE_H_
diff --git a/y2018_bot3/control_loops/drivetrain/drivetrain_main.cc b/y2018_bot3/control_loops/drivetrain/drivetrain_main.cc
deleted file mode 100644
index 095aaf9..0000000
--- a/y2018_bot3/control_loops/drivetrain/drivetrain_main.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "aos/init.h"
-
-#include "aos/events/shm-event-loop.h"
-#include "frc971/control_loops/drivetrain/drivetrain.h"
-#include "y2018_bot3/control_loops/drivetrain/drivetrain_base.h"
-
-using ::frc971::control_loops::drivetrain::DrivetrainLoop;
-
-int main() {
- ::aos::InitNRT(true);
-
- ::aos::ShmEventLoop event_loop;
- ::frc971::control_loops::drivetrain::DeadReckonEkf localizer(
- &event_loop,
- ::y2018_bot3::control_loops::drivetrain::GetDrivetrainConfig());
- DrivetrainLoop drivetrain(
- ::y2018_bot3::control_loops::drivetrain::GetDrivetrainConfig(),
- &event_loop, &localizer);
-
- event_loop.Run();
-
- ::aos::Cleanup();
- return 0;
-}
diff --git a/y2018_bot3/control_loops/python/BUILD b/y2018_bot3/control_loops/python/BUILD
deleted file mode 100644
index 5b6f0a2..0000000
--- a/y2018_bot3/control_loops/python/BUILD
+++ /dev/null
@@ -1,54 +0,0 @@
-package(default_visibility = ["//y2018_bot3:__subpackages__"])
-
-py_binary(
- name = "drivetrain",
- srcs = [
- "drivetrain.py",
- ],
- legacy_create_init = False,
- restricted_to = ["//tools:k8"],
- deps = [
- ":python_init",
- "//external:python-gflags",
- "//external:python-glog",
- "//frc971/control_loops/python:drivetrain",
- ],
-)
-
-py_binary(
- name = "polydrivetrain",
- srcs = [
- "drivetrain.py",
- "polydrivetrain.py",
- ],
- legacy_create_init = False,
- restricted_to = ["//tools:k8"],
- deps = [
- ":python_init",
- "//external:python-gflags",
- "//external:python-glog",
- "//frc971/control_loops/python:polydrivetrain",
- ],
-)
-
-py_library(
- name = "polydrivetrain_lib",
- srcs = [
- "drivetrain.py",
- "polydrivetrain.py",
- ],
- restricted_to = ["//tools:k8"],
- deps = [
- "//external:python-gflags",
- "//external:python-glog",
- "//frc971/control_loops/python:controls",
- "//frc971/control_loops/python:drivetrain",
- ],
-)
-
-py_library(
- name = "python_init",
- srcs = ["__init__.py"],
- visibility = ["//visibility:public"],
- deps = ["//y2018_bot3/control_loops:python_init"],
-)
diff --git a/y2018_bot3/control_loops/python/__init__.py b/y2018_bot3/control_loops/python/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/y2018_bot3/control_loops/python/__init__.py
+++ /dev/null
diff --git a/y2018_bot3/control_loops/python/drivetrain.py b/y2018_bot3/control_loops/python/drivetrain.py
deleted file mode 100644
index 1d3ad4b..0000000
--- a/y2018_bot3/control_loops/python/drivetrain.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/python
-
-from frc971.control_loops.python import drivetrain
-import sys
-
-import gflags
-import glog
-
-FLAGS = gflags.FLAGS
-
-gflags.DEFINE_bool('plot', False, 'If true, plot the loop response.')
-
-#TODO(sabina): update values
-kDrivetrain = drivetrain.DrivetrainParams(
- J=1.0,
- mass=1.0,
- robot_radius=0.6 / 2.0,
- wheel_radius=4.0 / 2.0,
- G_high=1.0,
- G_low=1.0,
- q_pos_low=0.12,
- q_pos_high=0.14,
- q_vel_low=1.0,
- q_vel_high=0.95,
- has_imu=False)
-
-def main(argv):
- argv = FLAGS(argv)
- glog.init()
-
- if FLAGS.plot:
- drivetrain.PlotDrivetrainMotions(kDrivetrain)
- elif len(argv) != 5:
- print "Expected .h file name and .cc file name"
- else:
- # Write the generated constants out to a file.
- drivetrain.WriteDrivetrain(argv[1:3], argv[3:5], 'y2018_bot3', kDrivetrain)
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv))
diff --git a/y2018_bot3/control_loops/python/polydrivetrain.py b/y2018_bot3/control_loops/python/polydrivetrain.py
deleted file mode 100644
index 6037138..0000000
--- a/y2018_bot3/control_loops/python/polydrivetrain.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/python
-
-import sys
-from y2018_bot3.control_loops.python import drivetrain
-from frc971.control_loops.python import polydrivetrain
-
-import gflags
-import glog
-
-__author__ = 'Austin Schuh (austin.linux@gmail.com)'
-
-FLAGS = gflags.FLAGS
-
-try:
- gflags.DEFINE_bool('plot', False, 'If true, plot the loop response.')
-except gflags.DuplicateFlagError:
- pass
-
-def main(argv):
- if FLAGS.plot:
- polydrivetrain.PlotPolyDrivetrainMotions(drivetrain.kDrivetrain)
- elif len(argv) != 7:
- glog.fatal('Expected .h file name and .cc file name')
- else:
- polydrivetrain.WritePolyDrivetrain(argv[1:3], argv[3:5], argv[5:7],
- 'y2018_bot3', drivetrain.kDrivetrain)
-
-if __name__ == '__main__':
- argv = FLAGS(sys.argv)
- glog.init()
- sys.exit(main(argv))
diff --git a/y2019/BUILD b/y2019/BUILD
index 792844f..04855d5 100644
--- a/y2019/BUILD
+++ b/y2019/BUILD
@@ -26,7 +26,7 @@
],
visibility = ["//visibility:public"],
deps = [
- "//aos:once",
+ "@com_google_absl//absl/base",
"//aos/logging",
"//aos/mutex",
"//aos/network:team_number",
diff --git a/y2019/constants.cc b/y2019/constants.cc
index 043624d..5466ce2 100644
--- a/y2019/constants.cc
+++ b/y2019/constants.cc
@@ -11,7 +11,7 @@
#include "aos/logging/logging.h"
#include "aos/mutex/mutex.h"
#include "aos/network/team_number.h"
-#include "aos/once.h"
+#include "absl/base/call_once.h"
#include "y2019/control_loops/superstructure/elevator/integral_elevator_plant.h"
#include "y2019/control_loops/superstructure/intake/integral_intake_plant.h"
#include "y2019/control_loops/superstructure/stilts/integral_stilts_plant.h"
@@ -230,17 +230,19 @@
return r;
}
-const Values *DoGetValues() {
+void DoGetValues(const Values** result) {
uint16_t team = ::aos::network::GetTeamNumber();
AOS_LOG(INFO, "creating a Constants for team %" PRIu16 "\n", team);
- return DoGetValuesForTeam(team);
+ *result = DoGetValuesForTeam(team);
}
} // namespace
const Values &GetValues() {
- static ::aos::Once<const Values> once(DoGetValues);
- return *once.Get();
+ static absl::once_flag once_;
+ static const Values* result;
+ absl::call_once(once_, DoGetValues, &result);
+ return *result;
}
const Values &GetValuesForTeam(uint16_t team_number) {
diff --git a/y2019/vision/server/www/main.ts b/y2019/vision/server/www/main.ts
index 5647d7b..9e90563 100644
--- a/y2019/vision/server/www/main.ts
+++ b/y2019/vision/server/www/main.ts
@@ -16,7 +16,7 @@
private targetX = 0;
private targetY = 0;
private targetTheta = 0;
- private cameraFrames : Frame[];
+ private cameraFrames : Frame[] = [];
private wrist: number = -1;
private elevator: number = -1;
@@ -42,12 +42,13 @@
const server = location.host;
this.initWebSocket(server);
- window.requestAnimationFrame(() => this.draw(ctx));
+ if (!!ctx) {
+ window.requestAnimationFrame(() => this.draw(ctx));
+ }
}
initWebSocket(server: string): void {
const socket = new WebSocket(`ws://${server}/ws`);
- this.cameraFrames = [];
socket.addEventListener('message', (event) => {
const j = JSON.parse(event.data);