Releases: HiceS/mirabuf
Fix for style guide
1.2.2
1.2.2
Major Changes
World
Entirely removed world and associated files with world, no longer useful to us and decided to limit package size
Joints
Added MotionLink
which allows us to link the motions of two joint instances, this is not available through fusion so it will need to be added by a third party if it is added.
Thumbnail
Added a way to save a thumbnail in the file - ideally this should be saved and then removed once the file is uploaded to a database. Or should just stay in.
Minor Fixes - New Dynamic Parts
Changes
Small changes that should have only a minor impact on existing signal declarations
Signal
https://github.com/HiceS/mirabuf/blob/7d0b2571a44ead67a8eba61c1697532063861b76/signal.proto#L43-L49
As discussed with @KyroVibe and @HiceS we decided that Signal message didn't make much sense. We have tried to keep it as faithful to the original as possible however we are changing the device_type to only be an enum now. However the old device type will now by used as a custom type field to ensure the files can still be loaded. However they might not function identically.
Motor
Changed units on DCMotor::stall_torque
from in-oz to Nm due to popular demand and common sense
PartDefinition
After looking through the old ability to export a field we wanted an easy way to nest simple dynamic rigidbodies inside of a static assembly without entirely isolating them.
The easiest way is to add 3 new fields to the PartDefinition that can propagate out to the instances :
bool dynamic = 5;
float friction_override = 6;
float mass_override = 7;
Now we can nest balls and other simple objects within a single static assembly.
Worlds and Motors
DC Motors
DC Motors are now part of the Joints Collection and can be created and then referenced like everything else. All of the values available for motors should be represented as they are in real life and tuned for the simulator.
New Motor Message :
message DCMotor {
reserved 1;
string reference_url = 2; /// Reference for purchase page or spec sheet
float torque_constant = 3; /// m-Nm/Amp
float emf_constant = 4; /// mV/rad/sec
float resistance = 5; /// Resistance of Motor - Optional if other values are known
uint32 maximum_effeciency = 6; /// measure in percentage of 100 - generally around 60 - measured under optimal load
uint32 maximum_power = 7; /// measured in Watts
DutyCycles duty_cycle = 8; /// Stated Duty Cycle of motor
reserved 9 to 15;
/// Information usually found on datasheet
message Advanced {
float free_current = 1; /// measured in AMPs
uint32 free_speed = 2; /// measured in RPM
float stall_current = 3; /// measure in AMPs
float stall_torque = 4; /// measured in in-oz
uint32 input_voltage = 5; /// measured in Volts DC
float resistance_variation = 7; /// between (K * (N / 4)) and (K * ((N-2) / 4)) where N is number of poles - leave at 0 if unknown
}
Advanced advanced = 16; /// Optional data that can give a better relationship to the simulation
}
Worlds
Now worlds themselves can be saved, this is a different kind of file that can reference cloud or local assembly files and then instance them however someone chooses. They also now have the option for additional physics frames for each of the joint collections in the simulator. This is to save complete worlds to be loaded at any given point.
You do not need the World files in order to export or import a standard assembly.
Signals now a part of AssemblyData
Added Signals
Added a reference to Signals as a part of the AssemblyData
structure,
Now you can get the signal_reference
from the JointInstance
and construct the starting state for the Assembly in the case of a dynamic assembly.
First Iteration of Joints
I added many new abilities centered around the joints proto files.
Now you can optionally create JointInstance
These are a single instance of a joint that can override the list of affected parts as well as some basic transform data.
There is also the concept of DOF
which is new. It is basically treated as a way to define multiple axis of transformations rather than specifically specifying each.
I implemented a way to link all of these through a single Graph on the Assembly object. This means you can now go and sort through the available joints in the assembly. And for each joint in the assembly you can reference it's connected pieces as well as it's child affected parts.
This can potentially enable you to create circular dependencies as expected :
Rev1 -> Rev2 , Rev2 -> Rev3, Rev3 -> Rev1
We can utilize the fact that there are specific references to limit this however it's a work in progress.
Namespace fix
Changed the namespace and updated the license,
The controller message format is now the layout format.
The license went from originally BSD-3 -> MPL2
Updates to NPM Package
Creating a new minor revision due to npm typing failures.
Seems as if generating with node 12 requires jsdoc version that generates incorrect interfaces.
This is now updated and moving the compile target from -> es6
commonjs
First Synthesis Release
This is the first official release,
It will also be published at NPM
It has a documentation site
Early Test Build
Mira Libs
The following mira libraries have been compiled and are attached to be used with the protobuf version 3.11.2
. However you can easily recompile them for any version.
Currently there are no samples and this is jut for my own project however if someone has a suggestion or update please let me know.