-
Notifications
You must be signed in to change notification settings - Fork 85
Firmware
Note: To update the onboard firmware, follow the directions in the /Firmware/README.md
Dexter runs "Ubuntu 16.04 LTS" from the micro SD card on it's MicroZed board and automatically starts a program called DexRun.c (used to be iotest.c) in the /srv/samba/share folder.
DexRun.c is the interface between the ethernet port and the FPGA which controls Dexters hardware (motors, encoders, etc...). It opens a socket and accepts commands from DDE and sends data back. See DexRun-DDE-communications for more detail.
DexRun.c also provides a few local functions. For example, onboard motion planning is being developed.
Other files in the /srv/samba/share folder include
-
autoexec.make_ins
which callsDefaults.make_ins
which sets the default values for several items in the robot. e.g. "LengthLength" which are the length of each segment (or link) of the arm. This file can be read and parsed to ensure the control software (such as DDE) is aware of the robots settings. These .make_ins files contain oplets in the same format used to control Dexter, but without the job, instruction, and start and end time values. They /start/ with the oplet letter. Other make_ins files contain sequences of instructions to set modes, re-calibrate, etc... -
RunDexRun
is a bash script that checks versions and writes them to Defaults.make_ins, updates the DexRun program when it finds a new DexRun.c file, and optionally starts jobs in the onboard DDE Job Engine -
autoexec.jobs
if present, lists Job Engine jobs to be started as soon as the robot boots. -
AdcCenters.txt
contains the X and Y locations of the center of each encoder "eye". -
AxisCal.txt
is calculated from from Gear Ratio and Microstepping as follows (in DDE)
//Input:
var diff_pulley_small_num_teeth = 16
var diff_pulley_large_num_teeth = 90
var micro_step = 16
var motor_steps = 400
var gear_ratios = [
52,
52,
52,
diff_pulley_large_num_teeth / diff_pulley_small_num_teeth,
diff_pulley_large_num_teeth / diff_pulley_small_num_teeth
]
//Output:
var AxisCal_string = ""
for(let i = 0; i < 5; i++){
AxisCal_string += -(gear_ratios[i]*micro_step*motor_steps) / (3600*360) + "\n"
}
AxisCal_string += -Math.round(gear_ratios[3] / gear_ratios[1] * Math.pow(2, 24))
It is very possible to install and run other programs on Dexter. For example, you can install Node.js and run a web server / socket interface in order to access the robot without any installed software on your PC.
ROS Kenetic can probably be installed. Or the node.js httpd web server / port gateway can be updated to provide ROS messaging as well.
To search the Wiki, use the main search box in the black bar at the top, then select WiKi to filter the results or go to https://github.com/HaddingtonDynamics/Dexter/search?type=Wikis&q= and then add your search terms to the end of the URL.
To report errors, or request additional data, please chat with us on discord and/or raise a new issue