Skip to content

Commit c17b251

Browse files
committed
resolve comments
1 parent 437a9a8 commit c17b251

2 files changed

Lines changed: 14 additions & 14 deletions

File tree

src/software/embedded/services/imu.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// these functions taken from
1212
// https://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git/tree/lib/smbus.c
13-
__s32 i2c_smbus_access(int file, char read_write, __u8 command, int size,
13+
static __s32 i2c_smbus_access(int file, char read_write, __u8 command, int size,
1414
union i2c_smbus_data* data)
1515
{
1616
struct i2c_smbus_ioctl_data args;
@@ -27,7 +27,7 @@ __s32 i2c_smbus_access(int file, char read_write, __u8 command, int size,
2727
return err;
2828
}
2929

30-
__s32 i2c_smbus_read_byte_data(int file, __u8 command)
30+
static __s32 i2c_smbus_read_byte_data(int file, __u8 command)
3131
{
3232
union i2c_smbus_data data;
3333
int err;
@@ -39,7 +39,7 @@ __s32 i2c_smbus_read_byte_data(int file, __u8 command)
3939
return 0x0FF & data.byte;
4040
}
4141

42-
__s32 i2c_smbus_write_byte_data(int file, __u8 command, __u8 value)
42+
static __s32 i2c_smbus_write_byte_data(int file, __u8 command, __u8 value)
4343
{
4444
union i2c_smbus_data data;
4545
data.byte = value;
@@ -114,6 +114,7 @@ ImuService::ImuService() : initialized_(false)
114114
usleep(50000);
115115
}
116116

117+
// TODO: More robust calibration
117118
if (valid_samples > 0)
118119
{
119120
degrees_error_ = sum / valid_samples;
@@ -133,13 +134,15 @@ std::optional<ImuData> ImuService::poll(){
133134
std::optional<AngularAcceleration> angular_acceleration = pollAngularAcceleration(angular_velocity);
134135
std::optional<Eigen::Vector2d> imu_linear_acceleration = pollLinearAcceleration();
135136

136-
if (!angular_velocity.has_value() || !angular_acceleration.has_value() || !imu_linear_acceleration.has_value()){
137-
return std::nullopt;
137+
if (angular_velocity.has_value() || angular_acceleration.has_value() || imu_linear_acceleration.has_value()){
138+
std::optional<Eigen::Vector2d> linear_acceleration = transformLinearAcceleration(angular_velocity.value(), angular_acceleration.value(), imu_linear_acceleration.value());
139+
}
140+
else{
141+
std::optional<Eigen::Vector2d> linear_acceleration = std::nullopt;
138142
}
139143

140-
Eigen::Vector2d linear_acceleration = transformLinearAcceleration(angular_velocity.value(), angular_acceleration.value(), imu_linear_acceleration.value();
141144

142-
return ImuData{angular_velocity.value(), angular_acceleration.value(), linear_acceleration};
145+
return ImuData{angular_velocity, angular_acceleration, linear_acceleration};
143146

144147
}
145148
std::optional<int16_t> ImuService::readAndCombineByteData(uint8_t ls_reg, uint8_t ms_reg)
@@ -190,7 +193,7 @@ std::optional<AngularAcceleration> ImuService::pollAngularAcceleration(std::opti
190193

191194
if(!prev_angular_velocity_.has_value()){
192195
prev_angular_velocity_ = pollAngularVelocity();
193-
prev_time_ = std::chrono::steady_clock::now();;
196+
prev_time_ = std::chrono::steady_clock::now();
194197
return std::nullopt;
195198
}
196199

@@ -236,8 +239,6 @@ std::optional<Eigen::Vector2d> ImuService::pollLinearAcceleration()
236239
* ACCELEROMETER_FULL_SCALE_G
237240
* ACCELERATION_DUE_TO_GRAVITY_METERS_PER_SECOND_SQUARED;
238241

239-
// Transform using equations
240-
241242
return Eigen::Vector2d(a_x, a_y);
242243
}
243244

src/software/embedded/services/imu.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#include <Eigen/Dense>
44
#include <chrono>
55
#include <utility>
6-
#include <numbers>
76
#include <climits>
87

98
#include "proto/tbots_software_msgs.pb.h"
@@ -14,9 +13,9 @@
1413
* Handles low level IMU I2C communication, and some minor offset filtering.
1514
*/
1615
struct ImuData{
17-
AngularVelocity angular_velocity;
18-
AngularAcceleration angular_acceleration;
19-
Eigen::Vector2d linear_acceleration;
16+
std::optional<AngularVelocity> angular_velocity;
17+
std::optional<AngularAcceleration> angular_acceleration;
18+
std::optional<Eigen::Vector2d> linear_acceleration;
2019
};
2120
class ImuService
2221
{

0 commit comments

Comments
 (0)