Releases: pybricks/pybricks-micropython
Releases · pybricks/pybricks-micropython
3.6.0
Changelog
[Unreleased]
[3.6.0] - 2024-03-02
Changed
- Bump version from beta to 3.6.0 without additional changes.
[3.6.0b5] - 2025-02-26
Changed
- Changed order of the
DriveBase.arc
method parameters. This method has not
yet been released or documented, so this is not a breaking change (support#1157). - Reduced voltage threshold at which the charging light goes from red to green
to indicate that the battery is full from 8300 to 8190 mV (pybricks-micropython#292). - Simplified API for
hub.imu.up()
andhub.imu.tilt()
to only use a single
calibrated
keyword argument instead of separateuse_gyro
options. This
had not been released yet so is not a breaking change.
[3.6.0b4] - 2025-02-14
Fixed
- Fixed low-battery warning on boot (pybricks-micropython#292) when the
voltage is not actually low. - Fixed light indidicator always briefly showing green when just plugged in
or after rebooting (pybricks-micropython#292) even if battery is not
actually full.
[3.6.0b3] - 2025-02-14
Added
- Added optional
calibrated=True
parameter toacceleration()
andup()
and
angular_velocity()
androtation
methods of the IMU (support#943). - Implemented
hub.imu.orientation()
to give the rotation matrix of the hub or
robot with respect to the inertial frame. - Added calibration parameters that can be set for angular velocity offset and
scale and acceleration offset and scale. - Added
hub.system.reset_storage
to restore storage and settings to default
state. - Replaced
update_heading_correction
with_imu_calibrate.py
for 3D
calibration (support#1907).
Changed
- Enabled UTF-8 support for
str
objects. - The method
DriveBase.angle()
now returns a float (support#1844). This
makes it properly equivalent tohub.imu.heading
. - Re-implemented tilt using the gyro data by default. Pure accelerometer tilt
can still be obtained withhub.imu.tilt(calibrated=False)
. - Re-implemented
hub.imu.heading()
to use optionally use the projection of 3D
orientation to improve performance when the hub is lifted off the ground.
The 1D-based heading remains the default for now. - Change return value of connected() property from bool to int using the value
of pbdrv_usb_get_bcd(). This will allow pro users to be able to tell if they
have a "nonstandard" charger that could prevent proper
charging (pybricks-micropython#274). - When the Bluetooth button is selected to stop the program, don't disable the
stop button while the hub menu is active (support#1975).
Fixed
- Fixed battery charging timeout if it didn't reach 100% after about 6 hours.
This is same behavior observed in official firmware. (pybricks-micropython#292). - Fixed inconsistent battery level reported to user. Now it uses the same value
as used by the light indicator (support#2055). - Fixed
DriveBase.angle()
getting an incorrectly rounded gyro value, which
could causeturn(360)
to be off by a degree (support#1844). - Fixed
hub
silently ignoring non-orthogonal base axis when it should raise. - Fixed not handling negative duration in
Speaker.beep()
(support#1996).
Removed
- Removed ev3dev and ev3rt-based CI builds. Pybricks 2.0 on ev3dev will
continue to be available as a separate download.
[3.6.0b2] - 2024-10-15
Added
- Allow color objects to be iterated as h, s, v = color_object or indexed
as color_object[0]. This allows access to these properties in block
coding (support#1661). - Added
observe_enable
to the hubBLE
class to selectively turn observing
on and off, just like you can with broadcasting (support#1806). - Added
hub.system.info()
method with hub status flags (support#1496) and
value representing how the program was started.
Changed
- Relaxed speed limit from 1000 deg/s to 1200 deg/s for external Boost
motor (support#1623). - Make
broadcast_channel
optional instead of defaulting to0
.
Fixed
- Fixed persistent data not being deleted when swapping
from3.6.0b1
to3.5.0
and back to3.6.0b1
(support#1846). - Fixed controls stopping if
use_gyro
is called again with the same
argument as already active (support#1858). - Fixed lockup and reboot with f-strings and slice allocations in tight
loops (support#1668). - Fixed program restarting if the stop button was held to end the program
without an exception (support#1863). - Fixed program lockup when restarting a hub light or light matrix animation
at exact multiples of its animation interval (support#1295).
[3.6.0b1] - 2024-09-24
Added
- Allow Bluetooth to be toggled off and on with the Bluetooth button on the
Prime Hub and the Inventor Hub (support#1615), and have this state persist
between reboots. - Added
heading_correction
tohub.imu.settings
to allow for automatic
correction of thehub.imu.heading()
value (support#1678). - Added
update_heading_correction
to interactively set the heading
correction value (support#1678). - Added optional one byte program identifier to program start command.
For now, this is added to start various builtin
programs, but it prepares for the ability to start different downloaded
programs too (pybricks-micropython#254). - Added one byte program identifier to the hub status report to the host.
- Added interface and implementation for storing and selecting multiple code
slots on the Prime Hub and Inventor Hub. - Added ability to set distance and angle in
DriveBase.reset()
. If the
DriveBase is using the gyro, it will be set to the same angle. (support#1617). - Added
DriveBase.arc
method with more intuitive parameters to drive along
an arc, to eventually replaceDriveBase.curve
(support#1157).
Changed
- Changed protocol to Pybricks Profile v1.4.0.
- When upgrading the firmware to a new version, the user program will now
be erased. This avoids issues with incompatible program files (support#1622). - The
angular_velocity_threshold
, andacceleration_threshold
settings
inhub.imu.settings
are now persistent between reboots. - Reduced hub poweroff time from 3 to 2 second to make it easier to turn off
the hub (pybricks-micropython#250). - Improved font for the digits
0--9
when displaying them
withhub.display.char(str(x))
(pybricks-micropython#253). - On SPIKE Prime Hub and Robot Inventor Hub, moved Bluetooth indications to
the Bluetooth light. Only warning lights will be shown on the main button
light. See (support#1716) and (pybricks-micropython#261). - Allow gyro calibration only while all motors are coasting (support#1840) to
prevent recalibration during very steady moves (support#1687) - Reduced default angular velocity stationary threshold from an undocumented
5 deg/s to 2 deg/s to reduce unwanted calibration while moving (support#1105). - If
imu.reset_heading()
is called while a drive base is actively using the
gyro, an exception will be raised (support#1818).
Fixed
- Fixed not able to connect to new Technic Move hub with
LWP3Device()
. - Removed
gc_collect()
fromtools.run_task()
loop to fix unwanted delays. - Fixed
await wait(0)
never yielding, so parallel tasks could lock up (support#1429).
Removed
- Removed
loop_time
argument topybricks.tools.run_task
as this wasn't
having the desired effect, and would cause loop round trips to take10 ms
for everyawait wait(1)
(support#1460). This was an undocumented feature.
[3.5.0] - 2024-04-11
Changed
- Bump version from release candidate to 3.5.0 with...
3.6.0b5
Changelog
[Unreleased]
[3.6.0b5] - 2025-02-26
Changed
- Changed order of the
DriveBase.arc
method parameters. This method has not
yet been released or documented, so this is not a breaking change (support#1157). - Reduced voltage threshold at which the charging light goes from red to green
to indicate that the battery is full from 8300 to 8190 mV (pybricks-micropython#292). - Simplified API for
hub.imu.up()
andhub.imu.tilt()
to only use a single
calibrated
keyword argument instead of separateuse_gyro
options. This
had not been released yet so is not a breaking change.
[3.6.0b4] - 2025-02-14
Fixed
- Fixed low-battery warning on boot (pybricks-micropython#292) when the
voltage is not actually low. - Fixed light indidicator always briefly showing green when just plugged in
or after rebooting (pybricks-micropython#292) even if battery is not
actually full.
[3.6.0b3] - 2025-02-14
Added
- Added optional
calibrated=True
parameter toacceleration()
andup()
and
angular_velocity()
androtation
methods of the IMU (support#943). - Implemented
hub.imu.orientation()
to give the rotation matrix of the hub or
robot with respect to the inertial frame. - Added calibration parameters that can be set for angular velocity offset and
scale and acceleration offset and scale. - Added
hub.system.reset_storage
to restore storage and settings to default
state. - Replaced
update_heading_correction
with_imu_calibrate.py
for 3D
calibration (support#1907).
Changed
- Enabled UTF-8 support for
str
objects. - The method
DriveBase.angle()
now returns a float (support#1844). This
makes it properly equivalent tohub.imu.heading
. - Re-implemented tilt using the gyro data by default. Pure accelerometer tilt
can still be obtained withhub.imu.tilt(calibrated=False)
. - Re-implemented
hub.imu.heading()
to use optionally use the projection of 3D
orientation to improve performance when the hub is lifted off the ground.
The 1D-based heading remains the default for now. - Change return value of connected() property from bool to int using the value
of pbdrv_usb_get_bcd(). This will allow pro users to be able to tell if they
have a "nonstandard" charger that could prevent proper
charging (pybricks-micropython#274). - When the Bluetooth button is selected to stop the program, don't disable the
stop button while the hub menu is active (support#1975).
Fixed
- Fixed battery charging timeout if it didn't reach 100% after about 6 hours.
This is same behavior observed in official firmware. (pybricks-micropython#292). - Fixed inconsistent battery level reported to user. Now it uses the same value
as used by the light indicator (support#2055). - Fixed
DriveBase.angle()
getting an incorrectly rounded gyro value, which
could causeturn(360)
to be off by a degree (support#1844). - Fixed
hub
silently ignoring non-orthogonal base axis when it should raise. - Fixed not handling negative duration in
Speaker.beep()
(support#1996).
Removed
- Removed ev3dev and ev3rt-based CI builds. Pybricks 2.0 on ev3dev will
continue to be available as a separate download.
[3.6.0b2] - 2024-10-15
Added
- Allow color objects to be iterated as h, s, v = color_object or indexed
as color_object[0]. This allows access to these properties in block
coding (support#1661). - Added
observe_enable
to the hubBLE
class to selectively turn observing
on and off, just like you can with broadcasting (support#1806). - Added
hub.system.info()
method with hub status flags (support#1496) and
value representing how the program was started.
Changed
- Relaxed speed limit from 1000 deg/s to 1200 deg/s for external Boost
motor (support#1623). - Make
broadcast_channel
optional instead of defaulting to0
.
Fixed
- Fixed persistent data not being deleted when swapping
from3.6.0b1
to3.5.0
and back to3.6.0b1
(support#1846). - Fixed controls stopping if
use_gyro
is called again with the same
argument as already active (support#1858). - Fixed lockup and reboot with f-strings and slice allocations in tight
loops (support#1668). - Fixed program restarting if the stop button was held to end the program
without an exception (support#1863). - Fixed program lockup when restarting a hub light or light matrix animation
at exact multiples of its animation interval (support#1295).
[3.6.0b1] - 2024-09-24
Added
- Allow Bluetooth to be toggled off and on with the Bluetooth button on the
Prime Hub and the Inventor Hub (support#1615), and have this state persist
between reboots. - Added
heading_correction
tohub.imu.settings
to allow for automatic
correction of thehub.imu.heading()
value (support#1678). - Added
update_heading_correction
to interactively set the heading
correction value (support#1678). - Added optional one byte program identifier to program start command.
For now, this is added to start various builtin
programs, but it prepares for the ability to start different downloaded
programs too (pybricks-micropython#254). - Added one byte program identifier to the hub status report to the host.
- Added interface and implementation for storing and selecting multiple code
slots on the Prime Hub and Inventor Hub. - Added ability to set distance and angle in
DriveBase.reset()
. If the
DriveBase is using the gyro, it will be set to the same angle. (support#1617). - Added
DriveBase.arc
method with more intuitive parameters to drive along
an arc, to eventually replaceDriveBase.curve
(support#1157).
Changed
- Changed protocol to Pybricks Profile v1.4.0.
- When upgrading the firmware to a new version, the user program will now
be erased. This avoids issues with incompatible program files (support#1622). - The
angular_velocity_threshold
, andacceleration_threshold
settings
inhub.imu.settings
are now persistent between reboots. - Reduced hub poweroff time from 3 to 2 second to make it easier to turn off
the hub (pybricks-micropython#250). - Improved font for the digits
0--9
when displaying them
withhub.display.char(str(x))
(pybricks-micropython#253). - On SPIKE Prime Hub and Robot Inventor Hub, moved Bluetooth indications to
the Bluetooth light. Only warning lights will be shown on the main button
light. See (support#1716) and (pybricks-micropython#261). - Allow gyro calibration only while all motors are coasting (support#1840) to
prevent recalibration during very steady moves (support#1687) - Reduced default angular velocity stationary threshold from an undocumented
5 deg/s to 2 deg/s to reduce unwanted calibration while moving (support#1105). - If
imu.reset_heading()
is called while a drive base is actively using the
gyro, an exception will be raised (support#1818).
Fixed
- Fixed not able to connect to new Technic Move hub with
LWP3Device()
. - Removed
gc_collect()
fromtools.run_task()
loop to fix unwanted delays. - Fixed
await wait(0)
never yielding, so parallel tasks could lock up (support#1429).
Removed
- Removed
loop_time
argument topybricks.tools.run_task
as this wasn't
having the desired effect, and would cause loop round trips to take10 ms
for everyawait wait(1)
(support#1460). This was an undocumented feature.
[3.5.0] - 2024-04-11
Changed
- Bump version from release candidate to 3.5.0 without additional changes.
[3.5.0b2] - 2024-04-05
Added
- Added optional keyword arguments to ...
3.6.0b4
Fixed
- Fixed low-battery warning on boot (pybricks-micropython#292) when the
voltage is not actually low. - Fixed light indicator always briefly showing green when just plugged in
or after rebooting (pybricks-micropython#292) even if battery is not
actually full.
3.6.0b3
Added
- Added optional
calibrated=True
parameter toacceleration()
andup()
and
angular_velocity()
androtation
methods of the IMU (support#943). - Implemented
hub.imu.orientation()
to give the rotation matrix of the hub or
robot with respect to the inertial frame. - Added calibration parameters that can be set for angular velocity offset and
scale and acceleration offset and scale. - Added
hub.system.reset_storage
to restore storage and settings to default
state.
Changed
- Enabled UTF-8 support for
str
objects. - The method
DriveBase.angle()
now returns a float (support#1844). This
makes it properly equivalent tohub.imu.heading
. - Re-implemented tilt using the gyro data by default. Pure accelerometer tilt
can still be obtained withhub.imu.tilt(use_gyro=False)
. - Re-implemented
hub.imu.heading()
to use optionally use the projection of 3D
orientation to improve performance when the hub is lifted off the ground.
The 1D-based heading remains the default for now. - Change return value of
connected()
property frombool
toint
using the value
ofpbdrv_usb_get_bcd()
. This will allow pro users to be able to tell if they
have a "nonstandard" charger that could prevent proper
charging (pybricks-micropython#274). - When the Bluetooth button is selected to stop the program, don't disable the
stop button while the hub menu is active (support#1975).
Fixed
- Fixed battery charging timeout if it didn't reach 100% after about 6 hours.
This is same behavior observed in official firmware. (pybricks-micropython#292). - Fixed inconsistent battery level reported to user. Now it uses the same value
as used by the light indicator (support#2055). - Fixed
DriveBase.angle()
getting an incorrectly rounded gyro value, which
could causeturn(360)
to be off by a degree (support#1844). - Fixed
hub
silently ignoring non-orthogonal base axis when it should raise. - Fixed not handling negative duration in
Speaker.beep()
(support#1996).
Removed
- Removed ev3dev and ev3rt-based CI builds. Pybricks 2.0 on ev3dev will
continue to be available as a separate download.
3.6.0b2
Added
- Allow color objects to be iterated as h, s, v = color_object or indexed
as color_object[0]. This allows access to these properties in block
coding (support#1661). - Added
observe_enable
to the hubBLE
class to selectively turn observing
on and off, just like you can with broadcasting (support#1806). - Added
hub.system.info()
method with hub status flags (support#1496) and
value representing how the program was started.
Changed
- Relaxed speed limit from 1000 deg/s to 1200 deg/s for external Boost
motor (support#1623). - Make
broadcast_channel
optional instead of defaulting to0
.
Fixed
- Fixed persistent data not being deleted when swapping
from3.6.0b1
to3.5.0
and back to3.6.0b1
(support#1846). - Fixed controls stopping if
use_gyro
is called again with the same
argument as already active (support#1858). - Fixed lockup and reboot with f-strings and slice allocations in tight
loops (support#1668). - Fixed program restarting if the stop button was held to end the program
without an exception (support#1863). - Fixed program lockup when restarting a hub light or light matrix animation
at exact multiples of its animation interval (support#1295).
3.6.0b1
Added
- Allow Bluetooth to be toggled off and on with the Bluetooth button on the
Prime Hub and the Inventor Hub (support#1615), and have this state persist
between reboots. - Added
heading_correction
tohub.imu.settings
to allow for automatic
correction of thehub.imu.heading()
value (support#1678). - Added
update_heading_correction
to interactively set the heading
correction value (support#1678). - Added optional one byte program identifier to program start command.
For now, this is added to start various builtin
programs, but it prepares for the ability to start different downloaded
programs too (pybricks-micropython#254). - Added one byte program identifier to the hub status report to the host.
- Added interface and implementation for storing and selecting multiple code
slots on the Prime Hub and Inventor Hub. - Added ability to set distance and angle in
DriveBase.reset()
. If the
DriveBase is using the gyro, it will be set to the same angle. (support#1617). - Added
DriveBase.arc
method with more intuitive parameters to drive along
an arc, to eventually replaceDriveBase.curve
(support#1157).
Changed
- Changed protocol to Pybricks Profile v1.4.0.
- When upgrading the firmware to a new version, the user program will now
be erased. This avoids issues with incompatible program files (support#1622). - The
angular_velocity_threshold
, andacceleration_threshold
settings
inhub.imu.settings
are now persistent between reboots. - Reduced hub poweroff time from 3 to 2 second to make it easier to turn off
the hub (pybricks-micropython#250). - Improved font for the digits
0--9
when displaying them
withhub.display.char(str(x))
(pybricks-micropython#253). - On SPIKE Prime Hub and Robot Inventor Hub, moved Bluetooth indications to
the Bluetooth light. Only warning lights will be shown on the main button
light. See (support#1716) and (pybricks-micropython#261). - Allow gyro calibration only while all motors are coasting (support#1840) to
prevent recalibration during very steady moves (support#1687) - Reduced default angular velocity stationary threshold from an undocumented
5 deg/s to 3 deg/s to reduce unwanted calibration while moving (support#1105). - If
imu.reset_heading()
is called while a drive base is actively using the
gyro, an exception will be raised (support#1818).
Fixed
- Fixed not able to connect to new Technic Move hub with
LWP3Device()
. - Removed
gc_collect()
fromtools.run_task()
loop to fix unwanted delays. - Fixed
await wait(0)
never yielding, so parallel tasks could lock up (support#1429).
Removed
- Removed
loop_time
argument topybricks.tools.run_task
as this wasn't
having the desired effect, and would cause loop round trips to take10 ms
for everyawait wait(1)
(support#1460). This was an undocumented feature.
3.5.0
Changed
- Bump version from release candidate to 3.5.0 without additional changes.
3.5.0b2
Added
- Added optional keyword arguments to
pybricks.tools.read_input_byte()
for
automatic conversion viachr
and to skip to the last byte (support#1574). - Added
disconnect
method topybricks.pupdevices.Remote
and
pybricks.iodevices.LWP3Device
(support#802).
Changed
- Raise a descriptive error when the
Car
class can't find a steering mechanism
end stop within 10 seconds (support#1564). - Extended region of readable data with
hub.system.storage
to include
user program (pybricks-micropython#243).
Fixed
- Fixed hubs not shutting down when holding hub button (support#1419).
3.5.0b1
Added
- Added support for rumble in
XboxController
(support#1024). - Added
Button.UP
,Button.DOWN
,Button.LEFT
, andButton.RIGHT
to
XboxController
buttons method (support#1537). The separate directional
pad method remains available.
Changed
- Allow single floating point value for brightness array (support#1547).
3.4.0
Changed
- Additional error checking in
pybricks.robotics.Car
setup (support#1502).