Skip to content

Characterizing an Arm

Oliver Fischer edited this page Mar 18, 2022 · 1 revision

Setup

Create/copy a YAML file and edit it accordingly to match the physical parameters of your arm (number segment, masses, lengths). If you're unsure if you should modify a value, leave it be, the defaults are pretty good. Then, obtain the other parameters using characterization.

If you want to be fully hands off, compile apps/fullCharacterize.cpp and run it:

cmake .
make fullCharacterize
./bin/fullCharacterize

This reads and writes to the config/fullCharacterize.yaml file, so be sure that you changed that YAML's physical parameters. You can also write your own characterizing script based on Characterize class if you only want to determine certain parameters, as the characterizing processes are rather time intensive.

Understanding the functions

write_yaml(std::string filename)

This will write a YAML containing the SoftTrunkParameters. The default parameters which are used by the Characterize class are new_params. To generate a new file based on them you would therefore write:

ch.new_params.write_yaml("example.yaml");

Where ch is the name of your Characterizer object.

valvemap(int maxpressure)

This function will actuate all valves in the valvemap vector while observing arm curvature, and thereby deduce the mapping. The mapping will then be written to new_params. The param maxpressure indicates which pressure will be used during the process.

stiffness(int segment, int verticalsteps ,int maxpressure)

This function will actuate for a bit and use least squares to determine the stiffness of a segment. It will then write the newly estimated shear modulus to new_params. verticalsteps indicates how many different intensities the arm should take per direction.

actuation(int segment, int maxpressure)

This function will estimate the "true" A matrix of a given segment and write it to new_params. Be sure to characzerize stiffness before running this.

angularError(int segment, std::string filename)

This is a relic from when SoPrA displayed a lot of angular error. Running it will spit out a csv to filename listing desired angle and measured angle. This can be used to analyse manufacturing error and to correct in controls, but due to this error being relatively low it isn't really needed anymore.