Releases: MB3hel/AUVControlBoard
Releases · MB3hel/AUVControlBoard
v1.1.0
Only changes since 1.1.0-beta2 are documentation changes
Changelog:
- New: SimCB
- Firmware can now be built to "SimCB" binaries. These are programs that can run on Windows, macOS, or Linux and act as a simulated control board.
- SimCB can be interacted with via TCP using the same communication protocol used by a real control board over UART
- In contrast to the old "simcb" built into the simulator itself, this can be used without the simulator to provide a simulated environment
- SimCB runs the actual firmware on the host OS using FreeRTOS simulation ports. Thus, it is the same code as the real control board.
- Thus, SimCB allows testing without a simulated environment (useful for unit tests in programs using control board) and ensures that testing (with or without simulated environment) is more accurate to the behavior of real hardware.
- Control board firmware now supports multiple different IMUs and depth sensors. There is no new hardware supported currently, but the codebase is structured to be able to. This has motivated some command changes described below.
- Various sensor message prefixes changed to be more generic
BNO055D
->IMUD
BNO055R
->IMUR
BNO055P
->IMUP
BNO055W
->IMUW
MS5837D
->DEPTHD
MS5837R
->DEPTHR
MS5837P
->DEPTHP
- Note that sensor specific configuration commands (eg
BNO055A
and calibration commands) are still the same. They are prefixed with the name of the specific sensor. Some of these commands will now ACK with INVALID_CMD if the sensor is not connected. This is generally true of commands that require data from the sensor (eg calibration) but generally will not apply to general configuration (eg axis configs). See docs for details.
- Sensor status
SSTAT
command now returns two bytes in the ACK. These bytes indicate which IMU / Depth sensor is in use. Currently supported IMUs are BNO055, SIM and supported depth sensors are MS5837, SIM. Note that when a control board is under the simulator (either real or SimCB under simulator), the sensors will report as the SIM sensors, not as real hardware anymore. - Removed Depth hold mode (DHOLD). It was essentially useless.
- Added a heartbeat message sent from control board to the PC once per second. This message can safely be ignored. It is used to indicate that the control board is still present and operating as expected. This is mostly for internal networking reasons for SimCB. But end users may find it useful to monitor the heartbeat messages at times too.
- Thruster PWM parameters must now be configured. If thruster parameters are not configured, the control board will not generate any PWM signals. This is used as a way to support more types of ESCs.
- This is done using the
TPWM
command. See the docs for details. - If speed sets are issued before this command, no PWM will be generated, until TPWM is sent. After TPWM is sent, the PWM starts being generate (this applies even for previous speed sets)
- TPWM should be part of the vehicle configuration (just like dof matrix, TINV, and RELDOF).
- This is done using the
- SASSISTTN message is now PIDTN to better reflect its purpose
- SimCB recommends port 5014 when prompting user (matching simulator default)
- Iface scripts support attaching to SimCB directly (
-p tcp:PORT
) - Iface scripts support non-default ports for the simulator
v1.1.0-beta2
- Fix a problem where invalid floating point values (eg nan) could deadlock the firmware causing a control board reset (note that this problem was not introduced in the 1.1.0 betas; it impacts older 1.0.x versions too).
v1.1.0-beta1
Changelog:
- SimCB recommends port 5014 when prompting user (matching simulator default)
- Iface scripts support attaching to SimCB directly (
-p tcp:PORT
) - Iface scripts support non-default ports for the simulator
v1.1.0-beta0
Changelog:
- New: SimCB
- Firmware can now be built to "SimCB" binaries. These are programs that can run on Windows, macOS, or Linux and act as a simulated control board.
- SimCB can be interacted with via TCP using the same communication protocol used by a real control board over UART
- In contrast to the old "simcb" built into the simulator itself, this can be used without the simulator to provide a simulated environment
- SimCB runs the actual firmware on the host OS using FreeRTOS simulation ports. Thus, it is the same code as the real control board.
- Thus, SimCB allows testing without a simulated environment (useful for unit tests in programs using control board) and ensures that testing (with or without simulated environment) is more accurate to the behavior of real hardware.
- Control board firmware now supports multiple different IMUs and depth sensors. There is no new hardware supported currently, but the codebase is structured to be able to. This has motivated some command changes described below.
- Various sensor message prefixes changed to be more generic
BNO055D
->IMUD
BNO055R
->IMUR
BNO055P
->IMUP
BNO055W
->IMUW
MS5837D
->DEPTHD
MS5837R
->DEPTHR
MS5837P
->DEPTHP
- Note that sensor specific configuration commands (eg
BNO055A
and calibration commands) are still the same. They are prefixed with the name of the specific sensor. Some of these commands will now ACK with INVALID_CMD if the sensor is not connected. This is generally true of commands that require data from the sensor (eg calibration) but generally will not apply to general configuration (eg axis configs). See docs for details.
- Sensor status
SSTAT
command now returns two bytes in the ACK. These bytes indicate which IMU / Depth sensor is in use. Currently supported IMUs are BNO055, SIM and supported depth sensors are MS5837, SIM. Note that when a control board is under the simulator (either real or SimCB under simulator), the sensors will report as the SIM sensors, not as real hardware anymore. - Removed Depth hold mode (DHOLD). It was essentially useless.
- Added a heartbeat message sent from control board to the PC once per second. This message can safely be ignored. It is used to indicate that the control board is still present and operating as expected. This is mostly for internal networking reasons for SimCB. But end users may find it useful to monitor the heartbeat messages at times too.
- Thruster PWM parameters must now be configured. If thruster parameters are not configured, the control board will not generate any PWM signals. This is used as a way to support more types of ESCs.
- This is done using the
TPWM
command. See the docs for details. - If speed sets are issued before this command, no PWM will be generated, until TPWM is sent. After TPWM is sent, the PWM starts being generate (this applies even for previous speed sets)
- TPWM should be part of the vehicle configuration (just like dof matrix, TINV, and RELDOF).
- This is done using the
- SASSISTTN message is now PIDTN to better reflect its purpose
Not yet implemented (but planned):
- Iface script support attaching to SimCB directly instead of through simulator
- Note that there is not yet a release of the simulator supporting the new SimCB binaries.
v1.0.3
- Added Orientation Hold mode (OHOLD)
- This mode is like SASSIST, however does not use a PID for depth (useful for gamepad, object tracking, etc)
- Implement versioning and version query / check for firmware and iface
- Updated gamepad script to use both OHOLD and SASSIST
v1.0.3-beta0
- Implement orientation hold mode
- Implement versioning and version query / check for firmware and iface
- Updated gamepad script to use both OHOLD and SASSIST
v1.0.2: Sensor Calibration
New Features:
- Implemented support for calibrating BNO055 (IMU) and MS5837 (depth sensor)
- IMU calibration can be saved to the control board (so it is persistent)
- Depth sensor calibration is not saved (as it varies too much between environments & weather conditions and is not worth saving)
BufFixes:
- A race condition causing BNO055 data to sometimes report as all zeros after configuring the IMU axes was fixed.
Other:
- Note that the flash.py script was changed for this release. Do not attempt to use old flash.py scripts to flash the current firmware.
v1.0.1: Bugfix Release
Features / Changes:
sensordata
example iface script now shows accumulated euler angles (note that these values are still experimental)
Bug fixes:
- Orientation PIDs (xrot, yrot, zrot) now actually reset when the target orientation changes in stability assist mode
- MS5837 reset command is not executed for "too long" commands with arbitrary suffix data
- Remove a potential divide by zero error when adjusting vehicle's relative DoF speeds
- Depth hold will now hold depths larger than 1m
v1.0.0: Initial Release
Initial feature-complete, probably stable release.
- Motion modeling using DoF matrix and relative DoF compensation
- Five modes of operation
- RAW: Speeds set directly for each thruster
- LOCAL: Speeds are in vehicle DoFs
- GLOBAL: Speeds are partially in world DoFs
- SASSIST: GLOBAL mode for translation, but uses PID for depth and orientation
- DHOLD: GLOBAL mode, but uses a PID for depth hold
- Sensors supported
- Onboard BNO055 IMU
- External MS5837 depth sensor
- Interface scripts
- Python code to interface with control board provided. Includes many example scripts
Simulator: https://github.com/MB3hel/GodotAUVSim
Documentation: https://mb3hel.github.io/AUVControlBoard/