Repository access links

This URL has Read-Only access
| Branch: | Tag: | Revision:

mikrokopter-genom3 @ master

# Date Author Comment
84979695 [master, tag: mikrokopter-genom3-2.0.1] 2019-06-25 17:02 Anthony Mallet

Release 2.0.1

5ae0d242 2019-06-25 15:52 Anthony Mallet

Don't publish IMU/motor data at fixed 1kHz, but only when new data is present

This allows to tune the publishing frequency according to what the flight
controller sends. In particular, this can be effectively changed with
the set_sensor_rate() service.

This helps when used in combination with ros that has hard times...

ce5c21da 2019-06-25 15:51 Anthony Mallet

Merge latest skeleton template

In particular, split properly the eigen3 codels dependency.

2ba7f56b 2019-04-04 16:29 Anthony Mallet

Reset the time offset of the received data if it diverges too much

The timestamp estimation assumes that the sensors (IMU, motors) are streaming
data at the specified frequency. It can happen that this is not true in
simulation (or if the flight controller did not receive the streaming message)....

067bf12b [tag: mikrokopter-genom3-2.0] 2019-01-30 17:56 Anthony Mallet

Be more tolerant to peaks in measured sensor rate

bc4823ee 2019-01-30 17:56 Anthony Mallet

Don't print "unknown message" when receiving a known, but ignored, message

0690a68f 2019-01-30 17:56 Anthony Mallet

Set measured sensor rate to the desired value when setting a new rate

This accelerates the convergence of the measured rate to the actual value.

28fa3cd5 2018-07-10 17:39 Anthony Mallet

Reject duplicate IMU/motor data packets

It can happen (in simulation only) that mrsim-genom3 sends twice the same data,
due to approximate scheduling and integer roundings in sequence number
computation. Just disregard duplicate data if this happens.

While here, also initialize sensor time structure.

49240d2f 2018-07-10 17:39 Anthony Mallet

Update sensor measurement rate when no message is received

6d19046f 2018-07-05 16:34 Anthony Mallet

Log sensor rate

eb2540b6 2018-07-05 16:30 Anthony Mallet

Check rotor status and sensor rate in servo()

Do a smooth stop if sensor rate don't match what's expected.
Do a hard stop if any motor is in failure state.

83c3e3b2 2018-07-05 16:30 Anthony Mallet

Log bad messages from the flight controller

14c6f7e1 2018-06-28 18:13 Anthony Mallet

During startup, resend start message to motors not going into the start state

This accounts for motors that, for some reason, do not receive the initial
start message.

84177687 2018-06-28 18:12 Anthony Mallet

During startup, disabled motors should not spin, but also not start

7efb274b 2018-06-15 17:13 Anthony Mallet

Actually discard trailing NaNs in set_velocity()

After computing the input length without trailing NaNs, the length must be
written back so that the computation has some effect.

06352b0e 2018-06-15 15:33 Anthony Mallet

Don't scale input twice during startup

The input port may not be refreshed exactly at each period. Depending on the
middleware, the input port data may be overwritten after each read() or only
when new data arrives. So one cannot scale the input in place, one must do a...

052fa6d5 2018-06-14 18:29 Anthony Mallet

Refuse to start servo() if measured sensor rate is below 90% of requested

5a5b507b 2018-06-14 18:17 Anthony Mallet

Measure effective sensor rate and return information with get_sensor_rate()

921c7cec 2018-06-14 15:28 Anthony Mallet

Reset imu values to NaN in case of timeout, to clean log files

The imu _present flag is already reset to false in case of timeout. Also
resetting the values to NaN make the logs more clear, without adding
complexity to the log function.

a9dbd26c 2018-06-13 16:08 Anthony Mallet

Fix vel -> avel typo (after switching to openrobots2-idl)

89762c46 2018-05-29 18:14 Anthony Mallet

Switch to openrobots2-idl - No functional change intended

Mechanically replace all pos->q by att->q and vel->w by avel->w. Do the
same for the covariances.

Bump version to 2.0

b47b2fe2 [tag: mikrokopter-genom3-1.7] 2018-01-31 15:15 Anthony Mallet

Release 1.7

2b50d492 2018-01-31 15:15 Anthony Mallet

Fix -Wunused-parameter

705699ee 2018-01-30 18:48 Anthony Mallet

Use aio(7) for logging and drop log entries when io requests are too slow

Use aio_write(3) to append to the log files. If a previous aio request was
not completed after one period, drop the next log entry and add an empty
line in the log file to indicate the miss (gnuplot will show it nicely)....

7caee75d 2018-01-30 17:24 Anthony Mallet

Fix a comment

e689440c 2017-10-13 15:57 Anthony Mallet

Fix a logic bug in the startup monitor codel

If a motor with a low id would be slow to start, a motor with a higher id could
already have gone through the whole init->start->failure loop and would then
appear as not yet started. This would cause the 'start' activity hand forever....

5e7ef6d4 2017-10-13 15:55 Anthony Mallet

Wait until all motors have cleared their emergency flag before starting

Not checking this could prevent from starting if a motor was previously stopped
in emergency (or because of a previous start failure) and the state was not
cleared fast enough after the new start command.

6e417735 2017-09-15 18:35 Anthony Mallet

Merge skeleton again, this time with README.adoc properly encoded in utf-8

912f2cf3 2017-09-15 18:21 Anthony Mallet

Document some services, in particular calibrate_imu() and set_zero()

This uses some input from Alberto Dallolio (thanks!).
Merge the lastest genom3 skeleton that provides an asciidoc README file.

Require genom3 2.99.30 for the port documentation feature.

44494e1a 2017-09-15 18:18 Anthony Mallet

Factor out a port->data() call

a6b9bdc3 2017-09-15 18:18 Anthony Mallet

Initialize uninitialized variable

a00ed9b6 2017-06-22 11:16 Anthony Mallet

Don't apply initial linear input scaling if input is not updated

It can happen that the input port is not refreshed between two periods. In this
case, the initial linear scaling was applied twice (or more).

Spotted by Marco Tognon, thanks!

d71004a9 2017-06-21 18:44 Anthony Mallet

Log current timestamp in addition to IMU timestamp

abaf1e46 2017-06-21 18:24 Anthony Mallet

Log brushless controllers clock rate changes in the log file

74fb7468 [tag: mikrokopter-genom3-1.6.1] 2017-06-15 17:23 Anthony Mallet

Release 1.6.1

5e0b0d0e 2017-06-15 17:20 Anthony Mallet

Disable the IMU filtering by default

Due to a phase shift of PI at the cut-off frequency, the IMU filter introduces
a delay that triggers 5-6 Hz oscillations on roll & pitch during the flight
when using the position controller.

Cancel the filtering by default until a better solution is found. Fixes #121.

d202a6ab [tag: mikrokopter-genom3-1.6] 2017-05-22 13:48 Anthony Mallet

Release 1.6

5eee4184 2017-05-19 18:49 Anthony Mallet

Filter out NaN from input velocity / throttle

If an input velocity is NaN, send 0 instead.
Fixes #102.

e01ce292 2017-05-19 18:10 Anthony Mallet

Check the FTDI latency timer when connecting to such a device

This ensures that the linux bug disregarding the ASYNC_LOW_LATENCY setting is
not in effect.

253b8a41 2017-05-19 18:06 Anthony Mallet

Reset receive ring buffer when reconnecting to a device

A previous disconnection may have left the input buffer in a partially
processed state or with unread data that must be cancelled if a new connection
is attempted.

c71ca2b5 2017-05-19 11:31 Anthony Mallet

Allow opening a tty by giving its (usb) serial number

Before opening the given path, try to match a usb serial number. If there
is a match, the corresponding device node is openened.

This uses libudev, so it's for linux only.

98ec72ab 2017-05-12 15:22 Anthony Mallet

Allow a direct connection to a brushless controller (with mkbl sofware)

While here, require mk{b,f}l >= 1.8 for the set_throttle() service and accept
connecting to a flymu>=1.8.

c7420439 2017-05-11 11:33 Anthony Mallet

Add a set_throttle() service, that sets the desired PWM for all rotors

Closes #111

a90097d6 2017-05-10 17:33 Anthony Mallet

Get rid of superfluous internal state data after openrobots-idl upgrade

The rotorcraft interface of openrobots-idl>=1.4 now allows to directly export
all measured data, without creating an extra port. As a side effect, this
closes #110 since the energy_left in the rotor_measure port represents the...

4bffda70 2017-05-10 14:31 Anthony Mallet

Require openrobots-idl >= 1.4

Mechanical replacement of data field that have changed since
No functional change.

a535a8c6 2017-05-05 17:43 Anthony Mallet

Use Linux ASYNC_LOW_LATENCY ioctl when available

Linux commit c6dce2626606e drops the ASYNC_LOW_LATENCY default setting in the
ftdi_sio driver. One must set it manually in order to get the 1ms latency
instead of the 16ms default.

Unfortunately the current ftdi_sio driver has a bug (since 557aaa7ffab6) that...

c9a654af 2017-04-27 18:11 Anthony Mallet

Fix -Wunused-parameter and -Wsign-compare warnings


0f831860 2016-11-22 14:51 Anthony Mallet

Raise an error in set_velocity only if a motor in in emergency state

Now that motors can be enabled while others are spinning, there is a transition
phase where a freshly enabled motor is not yet spinning while the others are
still receiving a velocity through set_velocity(). For this to work,...

3eadf920 [tag: mikrokopter-genom3-1.5] 2016-11-09 16:41 Anthony Mallet

Release 1.5

04354c94 2016-11-09 16:29 Anthony Mallet

Allow individual motor start and stop

The mikrokopter::disable function may now be called while motors are
spinning. This will stop and disable the designated motor.

The mikrokopter::enable function will start the designated motor again if any
other motor is already spinning....

a6f350e6 2016-11-09 11:38 Anthony Mallet

Add an attribute setting the IMU filter parameters

1094e54d 2016-11-09 11:37 Anthony Mallet

Update a comment

73b02cfb 2016-11-08 11:56 Anthony Mallet

Initialize the IIR filter for the IMU with the first reading

This avoids a strange initial filter response, which is especially painful in
simulation, sometimes leading to unrealistic motion.

9dd6f65f 2016-11-08 11:56 Anthony Mallet

Process only one message at a time on the tty channel

Instead of looping on all available messages in the message reception
codel, use the genom state machine to achieve the same loop. This leaves the
other tasks a chance to schedule other codels if the reception buffer has many...

3595a39e 2016-10-20 19:00 Anthony Mallet

Add a notch filter removing most of the propellers mechanical vibrations

3300701e 2016-09-21 17:51 Anthony Mallet

Simplify logging

At the cost of loosing precise timestamp for each set of data, centralize
logging in a single place. This generates smaller log files with only valid
lines for all data.

218e0616 [tag: mikrokopter-genom3-1.4] 2016-08-18 17:36 Anthony Mallet

Release 1.4

4265c563 2016-08-11 12:18 Anthony Mallet

Log the commanded and measured propeller velocities in the log file

881e011b 2016-08-05 10:38 Anthony Mallet

Add an acceleration ramp when starting the servo activity

In order to avoid unexpected behaviour due to a sudden transition from 0 to the
reference velocity, a linear scaling is applied to the tracked target during
the first 3 seconds (by default) of the servo activity.

0a409cff 2016-08-05 10:36 Anthony Mallet

Fix the velocity set when stopping the servo activity

With signed velocities, the period corresponding to the minimum velocity is
32767, not 65535.

455ad440 2016-05-30 15:04 Anthony Mallet

Make the stop() service an activity, and let it wait until motors are stopped

c286fb4a 2016-05-30 15:01 Anthony Mallet

Initialize the disabled flag of motor data during startup

9d565716 [tag: mikrokopter-genom3-1.3] 2016-05-17 15:48 Anthony Mallet

Release 1.3

43e0460b 2016-05-09 18:28 Anthony Mallet

Require tk3-mikrokopter 1.6 and implement the new signed velocities

dada1884 [tag: mikrokopter-genom3-1.2] 2016-04-15 14:52 Anthony Mallet

Release 1.2

ca702ef3 2016-04-15 11:32 Anthony Mallet

Use the 'servo' activity only to read from remote ports

The set_velocity() service directly sets the spinning velocities without
requiring the servo() activity to run.

9244792a 2016-04-11 10:56 Anthony Mallet

Update the controller interface to read propeller velocities instead of wrench

It's been decided that the wrench is not generic enough to be used in the low
level interface definition. With propeller velocities, the same hardware
interface component can handle different kind of rotorcraft geometries or...

e0ac47a9 [tag: mikrokopter-genom3-1.1] 2016-03-21 16:07 Anthony Mallet

Release 1.1

745449e9 2016-03-15 15:57 Anthony Mallet

Add a 'set_wrench' service, allowing to set a desired wrench once

This is only useful for clients able to periodically set such an input,
typically from within a simulink model.

59b49494 2016-02-16 18:36 Anthony Mallet

Reset exported data in case of timeout (no message for 500ms)

f97e8e7c 2016-02-16 17:09 Anthony Mallet

Let the start() service detect whenever some motors are not starting

The brushless controllers actually report whenever a motor could not be
started, so use this information to report the error instead of waiting

1c3f798b 2016-02-15 17:17 Anthony Mallet

Add IMU logging for offline analysis

481c8cc6 2016-02-10 17:19 Anthony Mallet

Implement IMU calibration

Two services are added : calibrate_imu() and zet_zero().

calibrate_imu() computes the 3x3 scaling matrices and 3d bias vector for both
gyroscopes and accelerometers so that all data is returned in a consistent,
orthogonal frame of reference. This is done by implementing the paper "A robust...

57a34b30 2015-12-17 15:37 Anthony Mallet

Accept all 1.5 firmwares

21888959 2015-12-09 15:05 Anthony Mallet

Implement proper better timestamping of IMU data

Using the algorithm provided in "A passive solution to the sensor
synchronization problem." International conference on Intelligent Robots and
Systems (IROS), 2010 IEEE/RSJ.

aa356469 2015-12-08 18:14 Anthony Mallet

Kill leftover sleep states

eb72eb61 2015-12-08 17:59 Anthony Mallet

Catch-up with tk3-mikrokopter-1.5 (read sequence numbers in sensor data)

8c8355e1 2015-12-08 15:42 Anthony Mallet

Handle undefined line speed macros

Baud rates above 38400 are not posix. Linux defines symbolic names for higer
speeds, while bsd systems use the integer value directly, still defining a few
symbolic names. This commit tries to keep everyone happy.

aff93867 [tag: mikrokopter-genom3-1.0] 2015-11-10 11:26 Anthony Mallet

Add missing header in codels Makefile

d651f4a9 2015-10-21 11:47 Anthony Mallet

Fix attitude computation from the accelerometer reading

-g is a vector pointing upward: fix a few signs in the atan2() expressions of
the attitude computation. This happened to work because the accelerometer
readings were actually inverted ...

1a2590cf 2015-10-19 15:02 Anthony Mallet

Sprinkle some "pause" events in the codels FSM where needed

950418e7 2015-10-19 15:00 Anthony Mallet

Use intrinsic euler angles in accelerometer roll/pitch computation

Those angles are later converted to a quaternion, using a formula that is
correct for instrinsic angles only. This makes little to no difference in the
near hovering configuration.

543065ae 2015-10-19 14:56 Anthony Mallet

Pull in last genom3 skeleton updates

64ad2806 2015-09-28 15:31 Anthony Mallet

Low level hardware controller for mikrokopter quadrotors

This component takes a desired wrench (forces + torques) control input in body
frame and computes the propellers velocities accordingly.