Roboy Plexus Documentation¶
Contents:
Installation¶
Prerequisites¶
Download ROS here.
Download and install SoCEDS 17 (or greater) standard edition (! must be installed with sudo).
Download and install Quartus 17 (or greater) lite edition. (Quartus is only needed if you want to change the FPGA core)
Get The GNU C/C++ compilers for armhf architecture:
sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
Clone roboy_plexus recursively into your catkin workspace:
git clone --recursive https://github.com/Roboy/roboy_plexus
The package also requires the following packages which need to be cloned into your workspace as well:
git clone https://github.com/Roboy/common_utilities
git clone https://github.com/Roboy/roboy_communication
FPGA¶
Find the SD card image with Ubuntu 16.04, Xfce, kernel Linux 4.9.78-ltsi on our servers:
wget -nv http://bot.roboy.org:8081/~roboy/DE10_nano_lxce_4.9.78-ltsi-altera.md5sum
wget -nv http://bot.roboy.org:8081/~roboy/DE10_nano_lxce_4.9.78-ltsi-altera.img
Plug the SD card into your reader and get the name of your SD card device with the following command:
sudo fdisk -l
Flash the image to a min 8GB SD card: (sdX has to be replaced with the correct device)
sudo dd if=DE10_nano_lxce_4.9.78-ltsi-altera.img of=/dev/sdX bs=1M status=progress
Warning
MAKE SURE YOU USE THE CORRECT DEVICE. The dd command overwrites any device you give it with ‘of’.
FPGA (flashing the old way –obsoleted)¶
Notice: The flashing procedure takes up to 10 minutes. Meanwhile, the flashing of the FPGA can be done. This has to be done permanently. Make sure the dip switches are set to On-Off-On-Off-Off, i.e. configure to flash on the FPGA on startup from EEPROM via jic (for further information read the de10 nano user guide: Download).
Start the jtag server:
sudo ~/intelFPGA/17.1/quartus/bin/jtagd
Connect the FPGA flash port with your computer by using a USB cable, then verify the connection using with the following command:
sudo ~/intelFPGA/17.1/quartus/bin/jtagconfig
Start the software ‘quartus’ and open the project DE10_NANO_SoC_GHRD.qpf
in the folder roboy_de10_nano_soc
. Open the programmer.
Under the section ‘Hardware Setup’ choose your FPGA. Select ‘auto-detect’ and verify the model.
Choose soc_system.jic
and flash the FPGA.
Build¶
Make sure you are in an embedded command shell before building the package. Build with catkin:
~/intelFPGA/17.1/embedded/embedded_command_shell.sh
catkin_make
Getting started¶
Connect to FPGA¶
Connect via USB port (not recommended, only if not found in the network)¶
Power-up your FPGA with the flashed SD card in it. Connect a USB cable to the UART port of the FPGA, after that use the following command:
sudo screen /dev/ttyUSB0 115200
You should see either the FPGA boot screen or already the login screen (if not press enter). Login in data: user: ‘root’ password: ‘Roboy2016’
To find out what IP the FPGA is using:
ifconfig
Connect via ssh¶
Connect either an ethernet cable to the FPGA and your LAN or connect it directly to your PC (in ubuntu-> settings-> network-> wired-> options-> ipv4-> shared_to_others)
The FPGA can be found via NMAP (search for Gandalf)
sudo nmap 192.168.0.0/24
If you cannot find this net, use Roboy’s class B net:
sudo nmap 192.168.0.0/16
In the ~/.bashrc of the FPGA edit the ROS_MASTER_URI variable so it is set to the IP where ROS core was started. Source the ~/.bashrc and make sure ROS_IP and ROS_MASTER_URI are set correctly:
echo $ROS_IP
echo $ROS_MASTER_URI
Copy data to FPGA¶
Copy plexus to FPGA¶
Copy the roboy_plexus binary to the FPGA:
scp <YOUR CATKIN WORKSPACE>/devel/lib/roboy_plexus/roboy_plexus root@10.42.0.1:~
Copy HDL to FPGA¶
The copy is only needed if the RBF file was changed.
FireUp the system¶
Start the ROS core on your host PC.
roscore
Run roboy_plexus on the FPGA:
./roboy_plexus
If you haven’t done this before execute the following commands on your computer:
echo "export ROS_IP=$(hostname -I|head -n1 | awk '{print $1;'})" >> ~/.bashrc
echo "export ROS_MASTER_URI=http://$ROS_IP:11311" >> ~/.bashrc
Troubleshooting¶
Troubleshooting plexus on PC¶
Echo $ROS_MASTER_URI shows the wrong IP even bashrc was edited
First solution
source ~/.bashrc
Second solution (IP address has to be changed to your current IP)
export ROS_MASTER_URI=http://192.168.0.231:11311
Troubleshooting plexus on FPGA¶
If the LED slides shows two “running” LED’s, plexus is started more than once. In that case use the following command:
killall roboy_plexus
It might happen that the ssh interface doesn’t open the terminal. This might occur if the plexus code is broken - to prevent it from autostart. In that case, connect the board to a PC via USB and comment out the last line of ~/.bashrc that starts Plexus.
Visualize data¶
For visualizing your data use RQT
Go into your catkin WORKSPACE and into SRC and clone RQT
git clone https://github.com/Roboy/roboy_rqt_plugins.git
After catkin_make is executed the new plugins have to be sourced:
source <YOUR CATKIN WORKSPACE>/devel/setup.bash
Conventions¶
We follow the coding guidelines:
Language | Guideline | Tools |
---|---|---|
Python | https://www.python.org/dev/peps/pep-0008/ | |
C++ | http://wiki.ros.org/CppStyleGuide | clang-format: https://github.com/davetcoleman/roscpp_code_format |
Coding Guidelines
Architecture Constraints¶
Technical Constraints / Runtime Interface Requirements¶
Hardware Constraints
Constraint Name | Description |
---|---|
Altera FPGA | All code is highly specific to the Altera FPGA. Intel has bought Altera and aims to integrate their SoC with FPGAs. We are on the right horse! |
Intel RealSense | Only the intel real sense can sense it.. |
Software Constraints
Constraint Name | Description |
---|---|
Altera FPGA | All code is highly specific to the Altera FPGA. Intel has bought Altera and aims to integrate their SoC with FPGAs. We are on the right horse! |
Intel RealSense | Only the intel real sense can sense it… |
Operating System Constraints
Constraint Name | Description |
---|---|
Windows 8 or higher | Due to the Intel RealSense SDK only being supported on Windows, we are stuck with Windows |
Programming Constraints
Constraint Name | Description |
---|---|
CouchDB | We have to use the CouchDB because the type of data we have to store changes at runtime… |
Technical Interfaces¶
This section describes the data interfaces to other systems around it. It follows 3 of the levels of interoperability (IO):
- Technical interoperability - Datastreams btwn systems. i.e. TCP/IP, RS232, …
- Syntactic interoperability - Units within the stream. i.e. XML, CSV, HL7, DICOM
- Semantic interoperability - Common definition of unit meaning.
API¶
-
class
A1335
¶ Public Functions
-
A1335
(int32_t *i2c_base, vector<uint8_t> &deviceIDs)¶ Constructor.
- Parameters
i2c_base
: i2c base (cf hps_0.h )deviceIDs
: active device ids
-
~A1335
()¶
-
bool
readAngleData
(vector<A1335State> &states)¶ Reads the angle data.
- Return
- success
- Parameters
states
: will be filled with angle data
-
string
decodeFlag
(int type, uint16_t code)¶ Decodes a status flag.
- Return
- human readable string
- Parameters
type
: the typecode
: thsi code
Private Functions
-
bool
writeMemoryCheck
(uint8_t deviceaddress, uint8_t eeaddress, uint8_t *wdata)¶
-
bool
clearStatusRegisters
(uint8_t deviceaddress)¶
-
bool
checkDefaultSettings
(A1335State *state)¶
-
bool
readDeviceState
(uint8_t deviceaddress, A1335State *state)¶
-
bool
searchAddressSpace
()¶
Private Members
-
vector<uint8_t>
deviceIDs
¶
-
const uint8_t
start_register
= 0x20¶
-
const uint8_t
num_registers
= 6¶
-
const uint8_t
start_register2
= 0x34¶
-
const uint8_t
num_registers2
= 2¶
-
const uint8_t
expected_registers
[8][2] = { {0b00000000, 0b00000000}, {0b10000000, 0b00010001}, {0b10100000, 0b00000000}, {0b10110000, 0b00000000}, {0b11110000, 0b00000000}, {0b11100000, 0b00000000}, {0b11000000, 0b00000000}, {0b11010000, 0b00000000} }¶ Content of the registers that should be on every chip Starts on ANG register (0x20:21)
-
const uint8_t
expected_registers_mask
[8][2] = { {0b11000000, 0b00000000}, {0b11110001, 0b11111111}, {0b11111100, 0b11111111}, {0b11111111, 0b11111111}, {0b11110000, 0b00000000}, {0b11110000, 0b00000000}, {0b11110100, 0b01111111}, {0b11111111, 0b11111111} }¶ 1 marks the bits that belong to the expected values (to check the expected content)
-
const vector<const char *>
angle_flags
= { "NEW ", "ERR " }¶
-
const vector<const char *>
status_flags
= { "ERR ", "NEW ", "Soft_Rst ", "PwON_Rst " }¶
-
const vector<const char *>
error_flags
= { "MagLow ", "MagHigh ", "UnderVolt ", "OverVolt ", "AngleLow ", "AngleHigh ", "ProcError ", "NoRunMode ", "(CRC_Err) ", "(INTFErr) ", "(XOV) ", "XERR " }¶
-
const vector<const char *>
xerror_flags
= { "SelfTest ", "MemAddr ", "Execute ", "ResetCond ", "WTD_Timer ", "WTD_Halt ", "EEPR_Hard ", "SRAM_Hard ", "Temp_Err ", "AngleWarn ", "EEPR_Soft ", "SRAM_Soft " }¶
-
uint8_t
deviceID
¶
-
string
str
¶
-
-
struct
A1335State
¶
-
class
Adafruit_BNO055
: public Adafruit_Sensor¶ Public Types
-
enum
adafruit_bno055_reg_t
¶ Values:
-
BNO055_PAGE_ID_ADDR
= 0X07¶
-
BNO055_CHIP_ID_ADDR
= 0x00¶
-
BNO055_ACCEL_REV_ID_ADDR
= 0x01¶
-
BNO055_MAG_REV_ID_ADDR
= 0x02¶
-
BNO055_GYRO_REV_ID_ADDR
= 0x03¶
-
BNO055_SW_REV_ID_LSB_ADDR
= 0x04¶
-
BNO055_SW_REV_ID_MSB_ADDR
= 0x05¶
-
BNO055_BL_REV_ID_ADDR
= 0X06¶
-
BNO055_ACCEL_DATA_Y_LSB_ADDR
= 0X0A¶
-
BNO055_ACCEL_DATA_Y_MSB_ADDR
= 0X0B¶
-
BNO055_ACCEL_DATA_Z_LSB_ADDR
= 0X0C¶
-
BNO055_ACCEL_DATA_Z_MSB_ADDR
= 0X0D¶
-
BNO055_MAG_DATA_X_LSB_ADDR
= 0X0E¶
-
BNO055_MAG_DATA_X_MSB_ADDR
= 0X0F¶
-
BNO055_MAG_DATA_Y_LSB_ADDR
= 0X10¶
-
BNO055_MAG_DATA_Y_MSB_ADDR
= 0X11¶
-
BNO055_MAG_DATA_Z_LSB_ADDR
= 0X12¶
-
BNO055_MAG_DATA_Z_MSB_ADDR
= 0X13¶
-
BNO055_GYRO_DATA_X_LSB_ADDR
= 0X14¶
-
BNO055_GYRO_DATA_X_MSB_ADDR
= 0X15¶
-
BNO055_GYRO_DATA_Y_LSB_ADDR
= 0X16¶
-
BNO055_GYRO_DATA_Y_MSB_ADDR
= 0X17¶
-
BNO055_EULER_H_LSB_ADDR
= 0X1A¶
-
BNO055_EULER_H_MSB_ADDR
= 0X1B¶
-
BNO055_EULER_R_LSB_ADDR
= 0X1C¶
-
BNO055_EULER_R_MSB_ADDR
= 0X1D¶
-
BNO055_EULER_P_LSB_ADDR
= 0X1E¶
-
BNO055_EULER_P_MSB_ADDR
= 0X1F¶
-
BNO055_QUATERNION_DATA_W_LSB_ADDR
= 0X20¶
-
BNO055_QUATERNION_DATA_W_MSB_ADDR
= 0X21¶
-
BNO055_QUATERNION_DATA_X_LSB_ADDR
= 0X22¶
-
BNO055_QUATERNION_DATA_X_MSB_ADDR
= 0X23¶
-
BNO055_QUATERNION_DATA_Y_LSB_ADDR
= 0X24¶
-
BNO055_QUATERNION_DATA_Y_MSB_ADDR
= 0X25¶
-
BNO055_QUATERNION_DATA_Z_LSB_ADDR
= 0X26¶
-
BNO055_QUATERNION_DATA_Z_MSB_ADDR
= 0X27¶
-
BNO055_LINEAR_ACCEL_DATA_Y_LSB_ADDR
= 0X2A¶
-
BNO055_LINEAR_ACCEL_DATA_Y_MSB_ADDR
= 0X2B¶
-
BNO055_LINEAR_ACCEL_DATA_Z_LSB_ADDR
= 0X2C¶
-
BNO055_LINEAR_ACCEL_DATA_Z_MSB_ADDR
= 0X2D¶
-
BNO055_GRAVITY_DATA_X_LSB_ADDR
= 0X2E¶
-
BNO055_GRAVITY_DATA_X_MSB_ADDR
= 0X2F¶
-
BNO055_GRAVITY_DATA_Y_LSB_ADDR
= 0X30¶
-
BNO055_GRAVITY_DATA_Y_MSB_ADDR
= 0X31¶
-
BNO055_GRAVITY_DATA_Z_LSB_ADDR
= 0X32¶
-
BNO055_GRAVITY_DATA_Z_MSB_ADDR
= 0X33¶
-
BNO055_TEMP_ADDR
= 0X34¶
-
BNO055_CALIB_STAT_ADDR
= 0X35¶
-
BNO055_SELFTEST_RESULT_ADDR
= 0X36¶
-
BNO055_INTR_STAT_ADDR
= 0X37¶
-
BNO055_SYS_ERR_ADDR
= 0X3A¶
-
BNO055_UNIT_SEL_ADDR
= 0X3B¶
-
BNO055_DATA_SELECT_ADDR
= 0X3C¶
-
BNO055_OPR_MODE_ADDR
= 0X3D¶
-
BNO055_PWR_MODE_ADDR
= 0X3E¶
-
BNO055_SYS_TRIGGER_ADDR
= 0X3F¶
-
BNO055_TEMP_SOURCE_ADDR
= 0X40¶
-
BNO055_AXIS_MAP_CONFIG_ADDR
= 0X41¶
-
BNO055_AXIS_MAP_SIGN_ADDR
= 0X42¶
-
BNO055_SIC_MATRIX_0_LSB_ADDR
= 0X43¶
-
BNO055_SIC_MATRIX_0_MSB_ADDR
= 0X44¶
-
BNO055_SIC_MATRIX_1_LSB_ADDR
= 0X45¶
-
BNO055_SIC_MATRIX_1_MSB_ADDR
= 0X46¶
-
BNO055_SIC_MATRIX_2_LSB_ADDR
= 0X47¶
-
BNO055_SIC_MATRIX_3_MSB_ADDR
= 0X4A¶
-
BNO055_SIC_MATRIX_4_LSB_ADDR
= 0X4B¶
-
BNO055_SIC_MATRIX_4_MSB_ADDR
= 0X4C¶
-
BNO055_SIC_MATRIX_5_LSB_ADDR
= 0X4D¶
-
BNO055_SIC_MATRIX_5_MSB_ADDR
= 0X4E¶
-
BNO055_SIC_MATRIX_6_LSB_ADDR
= 0X4F¶
-
BNO055_SIC_MATRIX_6_MSB_ADDR
= 0X50¶
-
BNO055_SIC_MATRIX_7_LSB_ADDR
= 0X51¶
-
BNO055_SIC_MATRIX_7_MSB_ADDR
= 0X52¶
-
BNO055_SIC_MATRIX_8_LSB_ADDR
= 0X53¶
-
BNO055_SIC_MATRIX_8_MSB_ADDR
= 0X54¶
-
ACCEL_OFFSET_X_LSB_ADDR
= 0X55¶
-
ACCEL_OFFSET_X_MSB_ADDR
= 0X56¶
-
ACCEL_OFFSET_Y_LSB_ADDR
= 0X57¶
-
ACCEL_OFFSET_Z_MSB_ADDR
= 0X5A¶
-
MAG_OFFSET_X_LSB_ADDR
= 0X5B¶
-
MAG_OFFSET_X_MSB_ADDR
= 0X5C¶
-
MAG_OFFSET_Y_LSB_ADDR
= 0X5D¶
-
MAG_OFFSET_Y_MSB_ADDR
= 0X5E¶
-
MAG_OFFSET_Z_LSB_ADDR
= 0X5F¶
-
MAG_OFFSET_Z_MSB_ADDR
= 0X60¶
-
GYRO_OFFSET_X_LSB_ADDR
= 0X61¶
-
GYRO_OFFSET_X_MSB_ADDR
= 0X62¶
-
GYRO_OFFSET_Y_LSB_ADDR
= 0X63¶
-
GYRO_OFFSET_Y_MSB_ADDR
= 0X64¶
-
GYRO_OFFSET_Z_LSB_ADDR
= 0X65¶
-
GYRO_OFFSET_Z_MSB_ADDR
= 0X66¶
-
ACCEL_RADIUS_LSB_ADDR
= 0X67¶
-
MAG_RADIUS_MSB_ADDR
= 0X6A¶
-
-
enum
adafruit_bno055_powermode_t
¶ Values:
-
POWER_MODE_NORMAL
= 0X00¶
-
POWER_MODE_LOWPOWER
= 0X01¶
-
POWER_MODE_SUSPEND
= 0X02¶
-
-
enum
adafruit_bno055_opmode_t
¶ Values:
-
OPERATION_MODE_CONFIG
= 0X00¶
-
OPERATION_MODE_ACCONLY
= 0X01¶
-
OPERATION_MODE_MAGONLY
= 0X02¶
-
OPERATION_MODE_GYRONLY
= 0X03¶
-
OPERATION_MODE_ACCMAG
= 0X04¶
-
OPERATION_MODE_ACCGYRO
= 0X05¶
-
OPERATION_MODE_MAGGYRO
= 0X06¶
-
OPERATION_MODE_AMG
= 0X07¶
-
OPERATION_MODE_M4G
= 0X0A¶
-
OPERATION_MODE_NDOF_FMC_OFF
= 0X0B¶
-
OPERATION_MODE_NDOF
= 0X0C¶
-
-
enum
adafruit_bno055_axis_remap_config_t
¶ Values:
-
REMAP_CONFIG_P0
= 0x21¶
-
REMAP_CONFIG_P1
= 0x24¶
-
REMAP_CONFIG_P2
= 0x24¶
-
REMAP_CONFIG_P3
= 0x21¶
-
REMAP_CONFIG_P4
= 0x24¶
-
REMAP_CONFIG_P5
= 0x21¶
-
REMAP_CONFIG_P6
= 0x21¶
-
REMAP_CONFIG_P7
= 0x24¶
-
-
enum
adafruit_bno055_axis_remap_sign_t
¶ Values:
-
REMAP_SIGN_P0
= 0x04¶
-
REMAP_SIGN_P1
= 0x00¶
-
REMAP_SIGN_P2
= 0x06¶
-
REMAP_SIGN_P3
= 0x02¶
-
REMAP_SIGN_P4
= 0x03¶
-
REMAP_SIGN_P5
= 0x01¶
-
REMAP_SIGN_P6
= 0x07¶
-
REMAP_SIGN_P7
= 0x05¶
-
-
enum
adafruit_vector_type_t
¶ Values:
-
VECTOR_ACCELEROMETER
= BNO055_ACCEL_DATA_X_LSB_ADDR¶
-
VECTOR_MAGNETOMETER
= BNO055_MAG_DATA_X_LSB_ADDR¶
-
VECTOR_GYROSCOPE
= BNO055_GYRO_DATA_X_LSB_ADDR¶
-
VECTOR_EULER
= BNO055_EULER_H_LSB_ADDR¶
-
VECTOR_LINEARACCEL
= BNO055_LINEAR_ACCEL_DATA_X_LSB_ADDR¶
-
VECTOR_GRAVITY
= BNO055_GRAVITY_DATA_X_LSB_ADDR¶
-
Public Functions
-
Adafruit_BNO055
(int32_t sensorID = -1, uint8_t address = BNO055_ADDRESS_A, void *h2p_lw_i2c_addr = nullptr)¶ Instantiates a new Adafruit_BNO055 class.
-
~Adafruit_BNO055
()¶
-
bool
begin
(adafruit_bno055_opmode_t mode = OPERATION_MODE_NDOF)¶ Sets up the HW.
-
void
setMode
(adafruit_bno055_opmode_t mode)¶ Puts the chip in the specified operating mode.
-
void
getRevInfo
(adafruit_bno055_rev_info_t *info)¶ Gets the chip revision numbers.
-
void
displayRevInfo
(void)¶
-
void
setExtCrystalUse
(bool usextal)¶ Use the external 32.768KHz crystal.
-
void
getSystemStatus
(uint8_t *system_status, uint8_t *self_test_result, uint8_t *system_error)¶ Gets the latest system status info.
-
void
displaySystemStatus
(void)¶
-
void
getCalibration
(uint8_t *system, uint8_t *gyro, uint8_t *accel, uint8_t *mag)¶ Gets current calibration state. Each value should be a uint8_t pointer and it will be set to 0 if not calibrated and 3 if fully calibrated.
-
imu::Vector<3>
getVector
(adafruit_vector_type_t vector_type)¶ Gets a vector reading from the specified source.
-
imu::Quaternion
getQuat
(void)¶ Gets a quaternion reading from the specified source.
-
int8_t
getTemp
(void)¶ Gets the temperature in degrees celsius.
-
bool
getEvent
(sensors_event_t *event)¶ Reads the sensor and returns the data as a sensors_event_t.
-
bool
getSensorOffsets
(uint8_t *calibData)¶ Reads the sensor’s offset registers into a byte array.
-
bool
getSensorOffsets
(adafruit_bno055_offsets_t &offsets_type)¶ Reads the sensor’s offset registers into an offset struct.
-
void
setSensorOffsets
(const uint8_t *calibData)¶ Writes an array of calibration values to the sensor’s offset registers.
-
void
setSensorOffsets
(const adafruit_bno055_offsets_t &offsets_type)¶ Writes to the sensor’s offset registers from an offset struct.
-
bool
isFullyCalibrated
(void)¶
Private Functions
-
byte
read8
(adafruit_bno055_reg_t reg)¶ Reads an 8 bit value over I2C.
-
bool
readLen
(adafruit_bno055_reg_t reg, byte *buffer, uint8_t len)¶ Reads the specified number of bytes over I2C.
-
bool
write8
(adafruit_bno055_reg_t reg, byte value)¶ Writes an 8 bit value over I2C.
-
enum
-
struct
adafruit_bno055_offsets_t
¶
-
struct
adafruit_bno055_rev_info_t
¶
-
class
Adafruit_LSM9DS1
¶ Public Types
-
enum
lsm9ds1AccGyroRegisters_t
¶ Values:
-
LSM9DS1_REGISTER_WHO_AM_I_XG
= 0x0F¶
-
LSM9DS1_REGISTER_CTRL_REG1_G
= 0x10¶
-
LSM9DS1_REGISTER_CTRL_REG2_G
= 0x11¶
-
LSM9DS1_REGISTER_CTRL_REG3_G
= 0x12¶
-
LSM9DS1_REGISTER_TEMP_OUT_L
= 0x15¶
-
LSM9DS1_REGISTER_TEMP_OUT_H
= 0x16¶
-
LSM9DS1_REGISTER_STATUS_REG
= 0x17¶
-
LSM9DS1_REGISTER_OUT_Y_L_G
= 0x1A¶
-
LSM9DS1_REGISTER_OUT_Y_H_G
= 0x1B¶
-
LSM9DS1_REGISTER_OUT_Z_L_G
= 0x1C¶
-
LSM9DS1_REGISTER_OUT_Z_H_G
= 0x1D¶
-
LSM9DS1_REGISTER_CTRL_REG4
= 0x1E¶
-
LSM9DS1_REGISTER_CTRL_REG5_XL
= 0x1F¶
-
LSM9DS1_REGISTER_CTRL_REG6_XL
= 0x20¶
-
LSM9DS1_REGISTER_CTRL_REG7_XL
= 0x21¶
-
LSM9DS1_REGISTER_CTRL_REG8
= 0x22¶
-
LSM9DS1_REGISTER_CTRL_REG9
= 0x23¶
-
LSM9DS1_REGISTER_CTRL_REG10
= 0x24¶
-
LSM9DS1_REGISTER_OUT_Y_L_XL
= 0x2A¶
-
LSM9DS1_REGISTER_OUT_Y_H_XL
= 0x2B¶
-
LSM9DS1_REGISTER_OUT_Z_L_XL
= 0x2C¶
-
LSM9DS1_REGISTER_OUT_Z_H_XL
= 0x2D¶
-
-
enum
lsm9ds1MagRegisters_t
¶ Values:
-
LSM9DS1_REGISTER_WHO_AM_I_M
= 0x0F¶
-
LSM9DS1_REGISTER_CTRL_REG1_M
= 0x20¶
-
LSM9DS1_REGISTER_CTRL_REG2_M
= 0x21¶
-
LSM9DS1_REGISTER_CTRL_REG3_M
= 0x22¶
-
LSM9DS1_REGISTER_CTRL_REG4_M
= 0x23¶
-
LSM9DS1_REGISTER_CTRL_REG5_M
= 0x24¶
-
LSM9DS1_REGISTER_STATUS_REG_M
= 0x27¶
-
LSM9DS1_REGISTER_OUT_Y_L_M
= 0x2A¶
-
LSM9DS1_REGISTER_OUT_Y_H_M
= 0x2B¶
-
LSM9DS1_REGISTER_OUT_Z_L_M
= 0x2C¶
-
LSM9DS1_REGISTER_OUT_Z_H_M
= 0x2D¶
-
LSM9DS1_REGISTER_CFG_M
= 0x30¶
-
LSM9DS1_REGISTER_INT_SRC_M
= 0x31¶
-
-
enum
lsm9ds1AccelRange_t
¶ Values:
-
LSM9DS1_ACCELRANGE_2G
= (0b00 << 3)¶
-
LSM9DS1_ACCELRANGE_16G
= (0b01 << 3)¶
-
LSM9DS1_ACCELRANGE_4G
= (0b10 << 3)¶
-
LSM9DS1_ACCELRANGE_8G
= (0b11 << 3)¶
-
-
enum
lm9ds1AccelDataRate_t
¶ Values:
-
LSM9DS1_ACCELDATARATE_POWERDOWN
= (0b0000 << 4)¶
-
LSM9DS1_ACCELDATARATE_3_125HZ
= (0b0001 << 4)¶
-
LSM9DS1_ACCELDATARATE_6_25HZ
= (0b0010 << 4)¶
-
LSM9DS1_ACCELDATARATE_12_5HZ
= (0b0011 << 4)¶
-
LSM9DS1_ACCELDATARATE_25HZ
= (0b0100 << 4)¶
-
LSM9DS1_ACCELDATARATE_50HZ
= (0b0101 << 4)¶
-
LSM9DS1_ACCELDATARATE_100HZ
= (0b0110 << 4)¶
-
LSM9DS1_ACCELDATARATE_200HZ
= (0b0111 << 4)¶
-
LSM9DS1_ACCELDATARATE_400HZ
= (0b1000 << 4)¶
-
LSM9DS1_ACCELDATARATE_800HZ
= (0b1001 << 4)¶
-
LSM9DS1_ACCELDATARATE_1600HZ
= (0b1010 << 4)¶
-
-
enum
lsm9ds1MagGain_t
¶ Values:
-
LSM9DS1_MAGGAIN_4GAUSS
= (0b00 << 5)¶
-
LSM9DS1_MAGGAIN_8GAUSS
= (0b01 << 5)¶
-
LSM9DS1_MAGGAIN_12GAUSS
= (0b10 << 5)¶
-
LSM9DS1_MAGGAIN_16GAUSS
= (0b11 << 5)¶
-
-
enum
lsm9ds1MagDataRate_t
¶ Values:
-
LSM9DS1_MAGDATARATE_3_125HZ
= (0b000 << 2)¶
-
LSM9DS1_MAGDATARATE_6_25HZ
= (0b001 << 2)¶
-
LSM9DS1_MAGDATARATE_12_5HZ
= (0b010 << 2)¶
-
LSM9DS1_MAGDATARATE_25HZ
= (0b011 << 2)¶
-
LSM9DS1_MAGDATARATE_50HZ
= (0b100 << 2)¶
-
LSM9DS1_MAGDATARATE_100HZ
= (0b101 << 2)¶
-
-
enum
lsm9ds1GyroScale_t
¶ Values:
-
LSM9DS1_GYROSCALE_245DPS
= (0b00 << 4)¶
-
LSM9DS1_GYROSCALE_500DPS
= (0b01 << 4)¶
-
LSM9DS1_GYROSCALE_2000DPS
= (0b11 << 4)¶
-
-
typedef struct Adafruit_LSM9DS1::vector_s
lsm9ds1Vector_t
¶
Public Functions
-
Adafruit_LSM9DS1
(int32_t sensorID = 0)¶
-
Adafruit_LSM9DS1
(int32_t sensorID = 0, void *i2c_base_address = nullptr)¶
-
void
initI2C
(int32_t sensorID)¶
-
bool
begin
(void)¶
-
void
read
(void)¶
-
void
readAccel
(void)¶
-
void
readMag
(void)¶
-
void
readGyro
(void)¶
-
void
readTemp
(void)¶
-
void
setupAccel
(lsm9ds1AccelRange_t range)¶
-
void
setupMag
(lsm9ds1MagGain_t gain)¶
-
void
setupGyro
(lsm9ds1GyroScale_t scale)¶
-
uint8_t
spixfer
(uint8_t data)¶
-
bool
getEvent
(sensors_event_t *accel, sensors_event_t *mag, sensors_event_t *gyro, sensors_event_t *temp)¶ Gets the most recent accel sensor event.
Public Members
-
lsm9ds1Vector_t
accelData
¶
-
lsm9ds1Vector_t
magData
¶
-
lsm9ds1Vector_t
gyroData
¶
-
int16_t
temperature
¶
Private Functions
-
void
getAccelEvent
(sensors_event_t *event, uint32_t timestamp)¶
-
void
getMagEvent
(sensors_event_t *event, uint32_t timestamp)¶
-
void
getGyroEvent
(sensors_event_t *event, uint32_t timestamp)¶
-
void
getTempEvent
(sensors_event_t *event, uint32_t timestamp)¶
Private Members
-
bool
_i2c
¶
-
int8_t
_csm
¶
-
int8_t
_csxg
¶
-
int8_t
_mosi
¶
-
int8_t
_miso
¶
-
int8_t
_clk
¶
-
float
_accel_mg_lsb
¶
-
float
_mag_mgauss_lsb
¶
-
float
_gyro_dps_digit
¶
-
int32_t
_lsm9dso_sensorid_accel
¶
-
int32_t
_lsm9dso_sensorid_mag
¶
-
int32_t
_lsm9dso_sensorid_gyro
¶
-
int32_t
_lsm9dso_sensorid_temp
¶
-
high_resolution_clock::time_point
t0
¶
-
high_resolution_clock::time_point
t1
¶
-
enum
-
class
Adafruit_Sensor
¶ Subclassed by Adafruit_BNO055, Adafruit_LSM9DS1::Sensor
Public Functions
-
Adafruit_Sensor
()¶
-
virtual
~Adafruit_Sensor
()¶
-
virtual void
enableAutoRange
(bool enabled)¶
-
virtual bool
getEvent
(sensors_event_t *) = 0¶
Private Members
-
bool
_autoRange
¶
-
-
class
AM4096
¶ Public Functions
-
AM4096
(int32_t *baseAddr)¶ Constructor.
- Parameters
baseAddr
: fpga i2C base address
-
AM4096
(int32_t *baseAddr, vector<int> &i2cAddrs)¶ Constructor.
- Parameters
baseAddr
: fpga i2C base addressi2cAddrs
: vector of device ids
-
~AM4096
()¶
-
void
readAbsAngle
(vector<uint32_t> &absAngles)¶ Reads the absolute angles of all devices.
- Parameters
absAngles
: the angles
-
bool
readAbsAngle
(uint8_t i2cAddr, uint32_t &absAngle)¶ Reads the ansolute angle of a device.
- Return
- dataOK
- Parameters
i2cAddr
: the device idabsAngle
: the angle
-
void
readRelAngle
(vector<uint32_t> &relAngles)¶ Reads the relative angles of all devices.
- Parameters
relAngles
: the angles
-
bool
readRelAngle
(uint8_t i2cAddr, uint32_t &relAngle)¶ Reads the relative angle of a device.
- Return
- dataOK
- Parameters
i2cAddr
: the device idrelAngle
: the angle
-
void
readMagnetStatus
(vector<bool> &magnetTooFar, vector<bool> &magnetTooClose)¶ Reads the magnet status of all devices.
- Parameters
magnetTooFar
:magnetTooClose
:
-
void
readMagnetStatus
(vector<unsigned char> &magnetTooFar, vector<unsigned char> &magnetTooClose)¶
-
void
readMagnetStatus
(uint8_t i2cAddr, bool &magnetTooFar, bool &magnetTooClose)¶ Reads the magnet status of a device.
- Parameters
i2cAddr
: the device idmagnetTooFar
:magnetTooClose
:
-
void
readAgcGain
(vector<uint8_t> &agcGain)¶ Reads AGC gain (magnet “power”) of all devices.
- Parameters
agcGain
: the gains
-
void
readAgcGain
(uint8_t i2cAddr, uint8_t &agcGain)¶ Reads AGC gain (magnet “power”)
- Parameters
i2cAddr
: addressagcGain
: the gain
-
void
readTacho
(vector<uint32_t> &tacho)¶ Reads tacho of all devices.
- Parameters
tacho
: tacho values
-
bool
readTacho
(uint8_t i2cAddr, uint32_t &tacho)¶ Reads tacho, returns.
- Return
- tacho overflow.
- Parameters
i2cAddr
: addresstacho
: tacho value
Public Members
-
vector<int>
i2cAddrs
¶
-
-
class
ArmControl
¶ Public Functions
-
ArmControl
(int32_t *myo_base)¶
-
~ArmControl
()¶
-
void
handCommandCB
(const roboy_middleware_msgs::HandCommand::ConstPtr &msg)¶ Callback for hand command.
- Parameters
msg
: hand command
-
void
fingerCommandCB
(const roboy_middleware_msgs::FingerCommand::ConstPtr &msg)¶ Callback for finger command.
- Parameters
msg
: finger command
Private Members
-
ros::NodeHandlePtr
nh
¶
-
ros::Subscriber
handCommand_sub
¶
-
ros::Subscriber
fingerCommand_sub
¶
-
ros::Publisher
armStatus_pub
¶
-
bool
keep_publishing
= true¶
-
int32_t *
myo_base
¶
-
int
elbow_agonist
= 1¶
-
int
elbow_antagonist
= 0¶
-
vector<uint8_t>
handDeviceIDs
¶
-
uint8_t
id
= 0¶
-
bool
elbow_joint_controller_active
= true¶
-
float
elbow_joint_angle
= 0¶
-
string
hand
¶
-
-
class
CRC32
¶ - #include <CRC32.h>
A class for calculating the CRC32 checksum from arbitrary data.
Public Functions
-
void
reset
()¶ Reset the checksum claculation.
-
void
update
(const uint8_t &data)¶ Update the current checksum caclulation with the given data.
- Parameters
data
: The data to add to the checksum.
-
template<typename
Type
>
voidupdate
(const Type &data)¶ Update the current checksum caclulation with the given data.
- Template Parameters
Type
: The data type to read.
- Parameters
data
: The data to add to the checksum.
-
template<typename
Type
>
voidupdate
(const Type *data, size_t size)¶ Update the current checksum caclulation with the given data.
- Template Parameters
Type
: The data type to read.
- Parameters
data
: The array to add to the checksum.size
: Size of the array to add.
-
uint32_t
finalize
() const¶ - Return
- the caclulated checksum.
Public Static Functions
-
template<typename
Type
>
static uint32_tcalculate
(const Type *data, size_t size)¶ Calculate the checksum of an arbitrary data array.
- Return
- the calculated checksum.
- Template Parameters
Type
: The data type to read.
- Parameters
data
: A pointer to the data to add to the checksum.size
: The size of the data to add to the checksum.
Private Members
-
uint32_t
_state
= ~0L¶ The internal checksum state.
-
void
-
class
I2C
¶ Public Functions
-
I2C
(void *baseAddr)¶ Constructor.
- Parameters
baseAddr
: i2c base address (cf hps_0.h)
-
void
write
(uint8_t i2cAddr, uint32_t data, uint8_t number_of_bytes)¶ Writes up to three bytes to an address.
- Parameters
i2cAddr
: device addressdata
: (reg<<24|data[0]<<16|data[1]<<8|data[2])number_of_bytes
: length(data)+1 for register
-
void
read
(uint8_t i2cAddr, uint8_t reg, uint8_t number_of_bytes, vector<uint8_t> &data)¶ Reads up to number of bytes from i2c slave.
- Parameters
i2cAddr
: i2c slave addressreg
: start registernumber_of_bytes
: hwo many bytes should be readdata
: will be filled with the read data
-
void
read_continuous
(uint8_t i2cAddr, uint8_t number_of_bytes, vector<uint8_t> &data)¶ Reads up to number of bytes from i2c slave, without start register (behaviour depends on slave device)
- Parameters
i2cAddr
: i2c slave addressnumber_of_bytes
: hwo many bytes should be readdata
: will be filled with the read data
-
bool
ack_error
()¶ Queries for acknowledge error.
- Return
- error/no error
-
bool
checkAddressSpace
(uint8_t fromDeviceID, uint8_t toDeviceID, vector<uint8_t> &activeDevices)¶ Scans the provided address range for active devices.
- Return
- true if at least one active device was found
- Parameters
fromDeviceID
: start addresstoDeviceID
: end addressactiveDevices
: will be filled with active device addresses
Public Members
-
const uint8_t
ADDR
= 0¶
-
const uint8_t
DATA
= 1¶
-
const uint8_t
RW
= 2¶
-
const uint8_t
ENA
= 3¶
-
const uint8_t
NUMBER_OF_BYTES
= 4¶
-
const uint8_t
GPIO_CONTROL
= 5¶
-
const uint8_t
READ_ONLY
= 6¶
-
const uint8_t
RESET_TLV
= 7¶
-
const uint8_t
BUSY
= 4¶
-
const uint8_t
ACK_ERROR
= 5¶
-
const uint8_t
FIFO_SIZE
= 6¶
-
const uint8_t
WRITE
= 0¶
-
const uint8_t
READ
= 1¶
Private Members
-
void *
h2p_lw_i2c_addr
¶
-
-
class
MyoControl
¶ Public Functions
-
MyoControl
(vector<int32_t *> &myo_base)¶ Constructor.
- Parameters
myo_base
: vector of myo base addresses (cf hps_0.h)
-
MyoControl
(vector<int32_t *> &myo_base, int32_t *adc_base)¶ Alternative Constructor.
- Parameters
myo_base
: vector of myo base addresses (cf hps_0.h)adc_base
: adc base address (cf hps_0.h)
-
~MyoControl
()¶
-
void
changeControl
(int motor, int mode, control_Parameters_t ¶ms, int32_t setPoint)¶ Changes the controller of a motor.
- Parameters
motor
: for this motormode
: choose from Position, Velocity or Displacementparams
: with these controller parameterssetPoint
: new setPoint
-
void
changeControl
(int motor, int mode, control_Parameters_t ¶ms)¶ Changes the controller of a motor.
- Parameters
motor
: for this motormode
: choose from Position, Velocity or Displacementparams
: with these controller parameters
-
void
changeControl
(int motor, int mode)¶ Changes the controller of a motor with the saved controller parameters.
- Parameters
motor
: for this motormode
: choose from Position, Velocity or Displacement
-
void
changeControl
(int mode)¶ Changes the controller of ALL motors with the saved controller parameters.
- Parameters
mode
: choose from Position, Velocity or Displacement
-
void
changeControlParameters
(int motor, control_Parameters_t ¶ms)¶ Changes the controller parameters of a motor.
- Parameters
motor
: for this motorparams
: with these controller parameters
-
void
reset
()¶ Resets all myo controllers.
-
bool
setSPIactive
(int motor, bool active)¶ Sets the spi state for the interface of a motor.
- Parameters
motor
:active
:active/not
: active
-
void
getPIDcontrollerParams
(int &Pgain, int &Igain, int &Dgain, int &forwardGain, int &deadband, int &setPoint, int &outputDivider, int motor)¶ Get the parameters for the PID controller of a motor.
- Parameters
motor
: for this motor
-
void
setPIDcontrollerParams
(uint16_t Pgain, uint16_t Igain, uint16_t Dgain, uint16_t forwardGain, uint16_t deadband, int motor, int mode)¶ Get the parameters for the PID controller of a motor.
- Parameters
motor
: for this motor
-
uint16_t
getControlMode
(int motor)¶ Gets the current control_mode of a motor.
- Parameters
motor
: for this motor
-
int32_t
getMotorAngle
(int motor)¶ Gets the motor angle of a myo brick.
- Return
- angle in ticks
- Parameters
motor
:
-
int32_t
getMotorAnglePrev
(int motor)¶ Gets the motor angle of a myo brick.
- Return
- angle in ticks
- Parameters
motor
:
-
int32_t
getRawMotorAngle
(int motor)¶ Gets the raw motor angle of a myo brick.
- Return
- angle in ticks
- Parameters
motor
:
-
int32_t
getRelativeMotorAngle
(int motor)¶ Gets the raw motor angle of a myo brick.
- Return
- angle in ticks
- Parameters
motor
:
-
int32_t
getMotorAngleOffset
(int motor)¶ Gets the raw motor angle of a myo brick.
- Return
- angle in ticks
- Parameters
motor
:
-
int32_t
getRevolutionCounter
(int motor)¶ Gets the motor angle revolution counter of a myo brick.
- Return
- angle in ticks
- Parameters
motor
:
-
bool
getPowerSense
()¶ Get the power sense.
- Return
- true (power on), false (power off)
-
int16_t
getPWM
(int motor)¶ Gets the current pwm of a motor.
- Parameters
motor
: for this motor
-
int32_t
getPosition
(int motor)¶ Gets the current position of a motor in radians.
- Parameters
motor
: for this motor
-
int32_t
getVelocity
(int motor)¶ Gets the current velocity of a motor in radians/seconds.
- Parameters
motor
: for this motor
-
int32_t
getDisplacement
(int motor)¶ Gets the displacement in encoder ticks.
- Parameters
motor
: for this motor
-
void
setPosition
(int motor, int32_t setPoint)¶ Sets the position of a motor in radians.
- Parameters
motor
: for this motor
-
void
setVelocity
(int motor, int32_t setPoint)¶ Sets the current velocity of a motor in radians/seconds.
- Parameters
motor
: for this motor
-
void
setDisplacement
(int motor, int16_t setPoint)¶ Set the displacement in encoder ticks.
- Parameters
motor
: for this motor
-
bool
configureMyoBricks
(vector<uint8_t> &motorIDs, vector<uint8_t> &deviceIDs, vector<int32_t> &encoderMultiplier, vector<int32_t> &gearBoxRatio)¶ Configures motors to be handled as myoBricks.
- Parameters
motorIDs
: these are the ids of the motorsdeviceIDs
: these are the i2c addresses of the motor angle sensors (A1335)encoderMultiplier
: this multiplies the output of the optical encodergearBoxRatio
: the ratio of the gear box for each myoBrick
-
int16_t
getCurrent
(int motor)¶ Gets the current in Ampere.
- Parameters
motor
: for this motor
-
void
getDefaultControlParams
(control_Parameters_t *params, int control_mode)¶ Fills the given params with default values for the corresponding control mode.
- Parameters
params
: pointer to control structcontrol_mode
: Position, Velocity, Force
-
void
allToPosition
(int32_t pos)¶ Changes the control mode for all motors to Position.
- Parameters
pos
: new setPoint
-
void
allToVelocity
(int32_t vel)¶ Changes the control mode for all motors to Velocity.
- Parameters
pos
: new setPoint
-
void
allToDisplacement
(int16_t displacement)¶ Changes the control mode for all motors to Displacement.
- Parameters
force
: new setPoint
-
void
zeroWeight
(int load_cell = 0)¶ Zeros the weight for a load cell.
- Parameters
load_cell
: for this load cell
-
uint32_t
readADC
(int load_cell)¶ Returns the current adc of the load cell.
- Return
- the adc value
- Parameters
load_cell
: for this load cell
-
float
getWeight
(int load_cell)¶ Returns the current weight according to adc_weight_parameters of a load_cell.
- Return
- the load
- Parameters
load_cell
: for this load cell
-
float
getWeight
(int load_cell, uint32_t &adc_value)¶ Returns the current weight according to adc_weight_parameters of a load_cell.
- Return
- the load
- Parameters
load_cell
: for this load cellthe
: adc value
-
float
recordTrajectories
(float samplingTime, float recordTime, map<int, vector<float>> &trajectories, vector<int> &idList, vector<int> &controlmode, string name)¶ records positions of motors in Displacement mode
- Parameters
samplingTime
:recordTime
:trajectories
: will be filled with positionsidList
: record these motorscontrolmode
: in this modename
: filename
-
float
startRecordTrajectories
(float samplingTime, map<int, vector<float>> &trajectories, vector<int> &idList, string name)¶ starts recording positions of motors in Displacement mode
- Parameters
samplingTime
:trajectories
: will be filled with positionsidList
: record these motorsname
: filename
-
void
stopRecordTrajectories
()¶ stops recording a trajectory and writes to file
-
bool
playTrajectory
(const char *file)¶ Plays back a trajectory.
- Return
- success
- Parameters
file
:
-
void
setPredisplacement
(int value)¶ Sets predisplacement for recording trajectories (50 by default)
- Parameters
value
:
-
void
setReplay
(bool status)¶ Enables/disables replaying trajectory.
- Parameters
replay
:
-
void
estimateSpringParameters
(int motor, int degree, vector<float> &coeffs, int timeout, uint numberOfDataPoints, float displacement_min, float displacement_max, vector<double> &load, vector<double> &displacement)¶ Estimates the spring parameters of a motor by pulling with variable forces keeping track of displacement and weight, it will either timeout or stop when the requested number of samples was reached.
- Parameters
motor
: for this motordegree
: the degree for the polynomial regressioncoeffs
: these are the result from the polynomial regressiontimeout
: in millisecondsnumberOfDataPoints
: how many samples do you wanne collectdisplacement_min
: the minimal displacement to be sampled fromdisplacement_min
: the maximal displacement to be sampled fromload
: will be filled with the load cell datadisplacement
: will be filled with the displacement
-
void
estimateMotorAngleLinearisationParameters
(int motor, int degree, vector<float> &coeffs, int timeout, uint numberOfDataPoints, float delta_revolution_negative, float delta_revolution_positive, vector<double> &motor_angle, vector<double> &motor_encoder)¶ Estimates the linearisation parameters of a myobrick by turning the motor and measuring the positions from the motor angle sensor.
The optical encoder data is then used to estimate linearisation parameters
- Parameters
motor
: for this motordegree
: the degree for the polynomial regressioncoeffs
: these are the result from the polynomial regressiontimeout
: in millisecondsnumberOfDataPoints
: how many samples do you wanne collectdelta_revolution_negative
: value to turn the motor to into negative direction in degreesdelta_revolution_positive
: value to turn the motor to into negative direction in degreesmotor_angle
: will be filled with the a1339 motor_angle data (values between 0-4095)motor_encoder
: will be filled with positions from the optical encoder (values between 0-4095)
-
void
polynomialRegression
(int degree, vector<double> &x, vector<double> &y, vector<float> &coeffs)¶ Performs polynomial regression (http://www.bragitoff.com/2015/09/c-program-for-polynomial-fit-least-squares/)
- Parameters
degree
: (e.g. 2 -> a * x^0 + b * x^1 + c * x^2)coeffs
: the estimated coefficientsX
: the x-dataY
: the y-data
-
void
gpioControl
(bool power)¶
Public Members
-
int
myo_base_of_motor
[NUMBER_OF_MOTORS_PER_FPGA
]¶
-
int
motor_offset
[NUMBER_OF_MOTORS_PER_FPGA
]¶
-
map<int, map<int, control_Parameters_t>>
control_params
¶
-
vector<uint8_t>
myo_bricks
¶
-
vector<int32_t>
myo_bricks_gearbox_ratio
¶
-
vector<int32_t>
myo_bricks_encoder_multiplier
¶
-
int32_t *
adc_base
¶
-
float
weight_offset
= 0¶
-
float
adc_weight_parameters
[2] = {-89.6187, 0.1133}¶
-
uint
numberOfMotors
¶
-
const string
trajectories_folder
= "/home/root/trajectories/"¶
-
const string
behaviors_folder
= "/home/root/behaviors/"¶
-
-
class
PerformMovementAction
¶ -
Protected Attributes
-
ros::NodeHandle
nh_
¶
-
boost::shared_ptr<MyoControl>
myoControl
¶
-
string
action_name
¶
-
actionlib::SimpleActionServer<roboy_control_msgs::PerformMovementAction>
performMovement_as
¶
-
roboy_control_msgs::PerformMovementFeedback
feedback
¶
-
roboy_control_msgs::PerformMovementResult
result
¶
-
ros::NodeHandle
-
class
PerformMovementsAction
¶ -
Protected Attributes
-
ros::NodeHandle
nh_
¶
-
boost::shared_ptr<MyoControl>
myoControl
¶
-
string
action_name
¶
-
actionlib::SimpleActionServer<roboy_control_msgs::PerformMovementsAction>
performMovements_as
¶
-
roboy_control_msgs::PerformMovementsFeedback
feedback
¶
-
roboy_control_msgs::PerformMovementsResult
result
¶
-
ros::NodeHandle
-
class
RoboyPlexus
Public Functions
-
RoboyPlexus
(MyoControlPtr myoControl, vector<int32_t *> &myo_base, vector<int32_t *> &i2c_base = DEFAULT_POINTER_VECTOR, int32_t *darkroom_base = nullptr, vector<int32_t *> &darkroom_ootx_addr = DEFAULT_POINTER_VECTOR, int32_t *adc_base = nullptr, int32_t *switches_base = nullptr)¶
-
~RoboyPlexus
()¶
-
string
getBodyPart
()¶
-
void
motorStatusPublisher
() Publishes information about motors.
Public Members
-
uint8_t
data
[33]¶
-
uint16_t
fw_version
¶
-
uint32_t
ID
¶
-
uint16_t
fcal_0_phase
¶
-
uint16_t
fcal_1_phase
¶
-
uint16_t
fcal_0_tilt
¶
-
uint16_t
fcal_1_tilt
¶
-
uint8_t
unlock_count
¶
-
uint8_t
hw_version
¶
-
uint16_t
fcal_0_curve
¶
-
uint16_t
fcal_1_curve
¶
-
int8_t
accel_dir_x
¶
-
int8_t
accel_dir_y
¶
-
int8_t
accel_dir_z
¶
-
uint16_t
fcal_0_gibphase
¶
-
uint16_t
fcal_1_gibphase
¶
-
uint16_t
fcal_0_gibmag
¶
-
uint16_t
fcal_1_gibmag
¶
-
uint8_t
mode
¶
-
uint8_t
faults
¶
-
struct RoboyPlexus::[anonymous]::[anonymous]
frame
¶
Private Functions
-
void
gsensorPublisher
()¶ Publishes IMU data.
-
void
adcPublisher
()¶ Publishes ADC values.
-
void
testBenchPublisher
()¶ Publishes sensor values measured in the test rig.
-
void
darkRoomPublisher
()¶ Publishes lighthouse sensor values.
-
void
darkRoomOOTXPublisher
()¶ Publishes decoded lighthouse ootx data.
-
void
motorAnglePublisher
()¶ Publishes motor angles.
-
void
magneticShoulderJointPublisher
()¶ Publishes 3d magnetic information about shoulder joint.
-
void
motorCommandCB
(const roboy_middleware_msgs::MotorCommand::ConstPtr &msg)¶ Callback for motor command.
- Parameters
msg
: motor command
-
void
motorAnglePID
()¶ Motor Angle PID controller.
-
bool
HandPower
(std_srvs::SetBool::Request &req, std_srvs::SetBool::Response &res)¶ Service for turning on/off hand.
- Return
- success
- Parameters
req
:res
:
-
bool
MotorConfigService
(roboy_middleware_msgs::MotorConfigService::Request &req, roboy_middleware_msgs::MotorConfigService::Response &res)¶ Service for changing motor PID parameters.
- Return
- success
- Parameters
req
: PID parametersres
: success
-
bool
ControlModeService
(roboy_middleware_msgs::ControlMode::Request &req, roboy_middleware_msgs::ControlMode::Response &res)¶ Service for changing the control mode of motors, perviously set PID parameters are restored.
- Return
- success
- Parameters
req
: control moderes
:
-
bool
MotorCalibrationService
(roboy_middleware_msgs::MotorCalibrationService::Request &req, roboy_middleware_msgs::MotorCalibrationService::Response &res)¶ Service for motor spring calibration, samples the spring space for a requested amount of time and estimates spring coefficients.
- Return
- Parameters
req
:res
:
-
bool
MyoBrickCalibrationService
(roboy_middleware_msgs::MyoBrickCalibrationService::Request &req, roboy_middleware_msgs::MyoBrickCalibrationService::Response &res)¶ Service for calibrating the motor angle sensor.
- Return
- Parameters
req
:res
:
-
bool
EmergencyStopService
(std_srvs::SetBool::Request &req, std_srvs::SetBool::Response &res)¶ Emergency stop service, zeros all PID gains, causing all motors to stop, PID parameters and control mode are restored on release.
- Return
- Parameters
req
:res
:
-
bool
SystemCheckService
(roboy_middleware_msgs::SystemCheck::Request &req, roboy_middleware_msgs::SystemCheck::Response &res)¶ Service for system check.
- Return
- Parameters
req
:res
:
-
void
StartRecordTrajectoryCB
(const roboy_control_msgs::StartRecordTrajectory::ConstPtr &msg)¶ Motor setpoints trajectory recording callback.
- Return
- Parameters
msg
:
-
void
StopRecordTrajectoryCB
(const std_msgs::Empty::ConstPtr &msg)¶ Callback stops recording the trajectory.
- Return
- Parameters
msg
:
-
void
SaveBehaviorCB
(const roboy_control_msgs::Behavior &msg)¶ Callback saves behavior.
- Parameters
msg
:
-
void
PredisplacementCB
(const std_msgs::Int32 &msg)¶ Callback updates the displacement for recording trajectories.
- Parameters
msg
:
-
void
EnablePlaybackCB
(const std_msgs::Bool::ConstPtr &msg)¶ Stops replaying the trajectory.
- Parameters
msg
:
-
bool
ListExistingItemsService
(roboy_control_msgs::ListItems::Request &req, roboy_control_msgs::ListItems::Response &res)¶ Service return a list of files in the requested folder.
- Return
- Parameters
req
:res
:
-
bool
ExpandBehaviorService
(roboy_control_msgs::ListItems::Request &req, roboy_control_msgs::ListItems::Response &res)¶ Service returns the list of actions in the requested behavior.
- Return
- Parameters
req
:res
:
-
bool
SetDisplacementForAll
(roboy_middleware_msgs::SetInt16::Request &req, roboy_middleware_msgs::SetInt16::Request &res)¶ Service sets displacement for all motors.
- Return
- Parameters
req
:res
:
-
uint8_t
rev
(uint8_t b)¶ Reverses the bit order of a byte, eg.
0b00001011 -> 0b11010000
- Return
- reversed byte
- Parameters
b
: input byte
-
uint32_t
reverse
(uint32_t b)¶ Reverses the bit order of each byte in a 4 byte uint32_t.
- Return
- reversed uint32_t
- Parameters
b
: input
-
bool
ADXL345_REG_WRITE
(int file, uint8_t address, uint8_t value)¶
-
bool
ADXL345_REG_READ
(int file, uint8_t address, uint8_t *value)¶
-
bool
ADXL345_REG_MULTI_READ
(int file, uint8_t readaddr, uint8_t readdata[], uint8_t len)¶
-
bool
ADXL345_Init
(int file)¶
-
bool
ADXL345_IsDataReady
(int file)¶
-
bool
ADXL345_XYZ_Read
(int file, uint16_t szData16[3])¶
-
bool
ADXL345_IdRead
(int file, uint8_t *pId)¶
-
bool
executeAction
(string actions)¶
-
bool
executeActions
(vector<string> actions)¶
-
vector<string>
expandBehavior
(string name)¶
Private Members
-
ros::NodeHandlePtr
nh
¶
-
boost::shared_ptr<ros::AsyncSpinner>
spinner
¶
-
ros::Subscriber
motorCommand_sub
¶
-
ros::Subscriber
startRecordTrajectory_sub
¶
-
ros::Subscriber
stopRecordTrajectory_sub
¶
-
ros::Subscriber
saveBehavior_sub
¶
-
ros::Subscriber
enablePlayback_sub
¶
-
ros::Subscriber
predisplacement_sub
¶
-
ros::Publisher
motorStatus_pub
¶
-
ros::Publisher
darkroom_pub
¶
-
ros::Publisher
darkroom_ootx_pub
¶
-
ros::Publisher
darkroom_status_pub
¶
-
ros::Publisher
adc_pub
¶
-
ros::Publisher
gsensor_pub
¶
-
ros::Publisher
motorAngle_pub
¶
-
ros::Publisher
magneticSensor_pub
¶
-
ros::Publisher
testbench_pub
¶
-
ros::ServiceServer
motorConfig_srv
¶
-
ros::ServiceServer
controlMode_srv
¶
-
ros::ServiceServer
emergencyStop_srv
¶
-
ros::ServiceServer
motorCalibration_srv
¶
-
ros::ServiceServer
replayTrajectory_srv
¶
-
ros::ServiceServer
executeActions_srv
¶
-
ros::ServiceServer
executeBehavior_srv
¶
-
ros::ServiceServer
handPower_srv
¶
-
ros::ServiceServer
setDisplacementForAll_srv
¶
-
ros::ServiceServer
listExistingTrajectories_srv
¶
-
ros::ServiceServer
listExistingBehaviors_srv
¶
-
ros::ServiceServer
expandBehavior_srv
¶
-
ros::ServiceServer
soliGetData_srv
¶
-
ros::ServiceServer
soli_srv
¶
-
ros::ServiceServer
soliGetFrameFormat_srv
¶
-
ros::ServiceServer
soliSetFrameFormat_srv
¶
-
ros::ServiceServer
soliGetAdcSamplerate_srv
¶
-
ros::ServiceServer
soliSetAdcSamplerate_srv
¶
-
ros::ServiceServer
soliGetChirpDuration_srv
¶
-
ros::ServiceServer
soliSetFMCWConfiguration_srv
¶
-
ros::ServiceServer
soliGetFMCWConfiguration_srv
¶
-
ros::ServiceServer
soliGetFrameInfo_srv
¶
-
ros::ServiceServer
myobrick_calibration_srv
¶
-
map<int, int>
setPoint_backup
¶
-
map<int, map<int, control_Parameters_t>>
control_params_backup
¶
-
map<int, int>
control_mode
¶
-
map<int, int>
control_mode_backup
¶
-
map<int, int>
rotationCounter
¶
-
map<int, float>
motorAngles
¶
-
boost::shared_ptr<MyoControl>
myoControl
¶
-
bool
keep_publishing
= true¶
-
int32_t *
darkroom_base
¶
-
int32_t *
adc_base
¶
-
int32_t *
switches_base
¶
-
vector<int32_t *>
myo_base
¶
-
vector<int32_t *>
i2c_base
¶
-
vector<int32_t *>
darkroom_ootx_addr
¶
-
bool
emergency_stop
= false¶
-
int
file
¶
-
const char *
filename
= "/dev/i2c-0"¶
-
uint8_t
id
¶
-
bool
bSuccess
¶
-
const int
mg_per_digi
= 4¶
-
uint16_t
szXYZ
[3]¶
-
int
cnt
= 0¶
-
int
max_cnt
= 0¶
-
union RoboyPlexus::[anonymous]
ootx
¶
-
uint32_t
ootx_sensor_channel
= 0¶
-
string
ethaddr
¶
-
vector<boost::shared_ptr<TLV493D_FPGA>>
tlv493D0
¶
-
string
body_part
¶
-
vector<string>
body_parts
¶
-
-
class
Sensor
: public Adafruit_Sensor¶ Public Functions
-
Sensor
()¶
-
Sensor
(Adafruit_LSM9DS1 *parent, lsm9ds1_read_func readFunc, lsm9ds1_get_event_func eventFunc, lsm9ds1_get_sensor_func sensorFunc)¶
-
virtual bool
getEvent
(sensors_event_t *event)¶
Private Members
-
Adafruit_LSM9DS1 *
_parent
¶
-
lsm9ds1_read_func
_readFunc
¶
-
lsm9ds1_get_event_func
_eventFunc
¶
-
lsm9ds1_get_sensor_func
_sensorFunc
¶
-
-
struct
sensor_t
¶ - #include <Adafruit_Sensor.h>
struct sensor_s is used to describe basic information about a specific sensor.
Public Members
-
char
name
[12]¶ sensor name
-
int32_t
version
¶ version of the hardware + driver
-
int32_t
sensor_id
¶ unique sensor identifier
-
int32_t
type
¶ this sensor’s type (ex.
SENSOR_TYPE_LIGHT)
-
float
max_value
¶ maximum value of this sensor’s value in SI units
-
float
min_value
¶ minimum value of this sensor’s value in SI units
-
float
resolution
¶ smallest difference between two values reported by this sensor
-
int32_t
min_delay
¶ min delay in microseconds between events.
zero = not a constant rate
-
char
-
struct
sensors_color_t
¶ - #include <Adafruit_Sensor.h>
struct sensors_color_s is used to return color data in a common format.
-
struct
sensors_event_t
¶ - #include <Adafruit_Sensor.h>
struct sensor_event_s is used to provide a single sensor event in a common format.
Public Members
-
int32_t
version
¶ must be sizeof(struct sensors_event_t)
-
int32_t
sensor_id
¶ unique sensor identifier
-
int32_t
type
¶ sensor type
-
int32_t
reserved0
¶ reserved
-
int32_t
timestamp
¶ time is in milliseconds
-
float
data
[4]¶
-
sensors_vec_t
acceleration
¶ acceleration values are in meter per second per second (m/s^2)
-
sensors_vec_t
magnetic
¶ magnetic vector values are in micro-Tesla (uT)
-
sensors_vec_t
orientation
¶ orientation values are in degrees
-
sensors_vec_t
gyro
¶ gyroscope values are in rad/s
-
float
temperature
¶ temperature is in degrees centigrade (Celsius)
-
float
distance
¶ distance in centimeters
-
float
light
¶ light in SI lux units
-
float
pressure
¶ pressure in hectopascal (hPa)
-
float
relative_humidity
¶ relative humidity in percent
-
float
current
¶ current in milliamps (mA)
-
float
voltage
¶ voltage in volts (V)
-
sensors_color_t
color
¶ color in RGB component values
-
union sensors_event_t::[anonymous] [anonymous]¶
-
int32_t
-
struct
sensors_vec_t
¶ - #include <Adafruit_Sensor.h>
struct sensors_vec_s is used to return a vector in a common format.
Public Members
-
float
v
[3]¶
-
float
x
¶
-
float
y
¶
-
float
z
¶
-
float
roll
¶ Rotation around the longitudinal axis (the plane body, ‘X axis’).
Roll is positive and increasing when moving downward. -90°<=roll<=90°
-
float
pitch
¶ Rotation around the lateral axis (the wing span, ‘Y axis’).
Pitch is positive and increasing when moving upwards. -180°<=pitch<=180°)
-
float
heading
¶ Angle between the longitudinal axis (the plane body) and magnetic north, measured clockwise when viewing from the top of the device.
0-359°
-
union sensors_vec_t::[anonymous] [anonymous]¶
-
int8_t
status
¶
-
uint8_t
reserved
[3]¶
-
float
-
class
TLV493D
¶ Public Functions
-
TLV493D
(int32_t *i2c_base)¶
-
~TLV493D
()¶
-
bool
initTLV
(uint8_t &deviceaddress, int devicepin)¶
-
void
reset
()¶
-
float
convertToMilliTesla
(uint8_t MSB, uint8_t LSB)¶
-
void
readAllRegisters
(int deviceaddress, vector<uint8_t> ®, bool print = true)¶
-
bool
read
(float &fx, float &fy, float &fz)¶
Private Functions
-
bool
checkParity
(uint32_t val)¶ checks the parity of 32 bit val
- Return
- true if odd, false if even
- Parameters
val
:
-
-
class
TLV493D_FPGA
¶ Public Functions
-
TLV493D_FPGA
(int32_t *i2c_base)¶
-
~TLV493D_FPGA
()¶
-
float
convertToMilliTesla
(int32_t data)¶
-
bool
read
(float &fx, float &fy, float &fz)¶
Public Members
-
int32_t *
tlv_base
¶
-
-
struct
vector_s
¶
-
namespace
std
¶
-
namespace
chrono
¶
-
file
A1335.hpp
- #include “roboy_plexus/i2c.hpp”#include <iostream>#include <ros/ros.h>
-
file
Adafruit_BNO055.hpp
- #include <cstdint>#include “i2c.hpp”#include “roboy_plexus/Adafruit_Sensor.h”#include “roboy_plexus/utility/imumaths.h”#include <chrono>
Defines
-
IOWR_32DIRECT
(base, offset, data)¶
-
BNO055_ADDRESS_A
¶
-
BNO055_ADDRESS_B
¶
-
BNO055_ID
¶
-
NUM_BNO055_OFFSET_REGISTERS
¶
Typedefs
-
typedef uint8_t
byte
¶
-
-
file
Adafruit_LSM9DS1.hpp
- #include “i2c.hpp”#include “roboy_plexus/Adafruit_Sensor.h”#include <cstring>
Defines
-
LSM9DS1_ADDRESS_ACCELGYRO
¶
-
LSM9DS1_ADDRESS_MAG
¶
-
LSM9DS1_XG_ID
¶
-
LSM9DS1_MAG_ID
¶
-
LSM9DS1_ACCEL_MG_LSB_2G
¶
-
LSM9DS1_ACCEL_MG_LSB_4G
¶
-
LSM9DS1_ACCEL_MG_LSB_8G
¶
-
LSM9DS1_ACCEL_MG_LSB_16G
¶
-
LSM9DS1_MAG_MGAUSS_4GAUSS
¶
-
LSM9DS1_MAG_MGAUSS_8GAUSS
¶
-
LSM9DS1_MAG_MGAUSS_12GAUSS
¶
-
LSM9DS1_MAG_MGAUSS_16GAUSS
¶
-
LSM9DS1_GYRO_DPS_DIGIT_245DPS
¶
-
LSM9DS1_GYRO_DPS_DIGIT_500DPS
¶
-
LSM9DS1_GYRO_DPS_DIGIT_2000DPS
¶
-
LSM9DS1_TEMP_LSB_DEGREE_CELSIUS
¶
-
MAGTYPE
¶
-
XGTYPE
¶
Typedefs
-
typedef void (
Adafruit_LSM9DS1
::*lsm9ds1_read_func
)(void)¶
-
typedef void (
Adafruit_LSM9DS1
::*lsm9ds1_get_event_func
)(sensors_event_t *, uint32_t)¶
-
-
file
Adafruit_Sensor.h
- #include <cstdint>#include <chrono>
Defines
-
SENSORS_GRAVITY_EARTH
¶ Earth’s gravity in m/s^2.
-
SENSORS_GRAVITY_MOON
¶ The moon’s gravity in m/s^2.
-
SENSORS_GRAVITY_SUN
¶ The sun’s gravity in m/s^2.
-
SENSORS_GRAVITY_STANDARD
¶
-
SENSORS_MAGFIELD_EARTH_MAX
¶ Maximum magnetic field on Earth’s surface.
-
SENSORS_MAGFIELD_EARTH_MIN
¶ Minimum magnetic field on Earth’s surface.
-
SENSORS_PRESSURE_SEALEVELHPA
¶ Average sea level pressure is 1013.25 hPa.
-
SENSORS_DPS_TO_RADS
¶ Degrees/s to rad/s multiplier.
-
SENSORS_GAUSS_TO_MICROTESLA
¶ Gauss to micro-Tesla multiplier.
Typedefs
-
typedef uint8_t
byte
Enums
-
enum
sensors_type_t
¶ Sensor types.
Values:
-
SENSOR_TYPE_ACCELEROMETER
= (1)¶ Gravity + linear acceleration.
-
SENSOR_TYPE_MAGNETIC_FIELD
= (2)¶
-
SENSOR_TYPE_ORIENTATION
= (3)¶
-
SENSOR_TYPE_GYROSCOPE
= (4)¶
-
SENSOR_TYPE_LIGHT
= (5)¶
-
SENSOR_TYPE_PRESSURE
= (6)¶
-
SENSOR_TYPE_PROXIMITY
= (8)¶
-
SENSOR_TYPE_GRAVITY
= (9)¶
-
SENSOR_TYPE_LINEAR_ACCELERATION
= (10)¶ Acceleration not including gravity.
-
SENSOR_TYPE_ROTATION_VECTOR
= (11)¶
-
SENSOR_TYPE_RELATIVE_HUMIDITY
= (12)¶
-
SENSOR_TYPE_AMBIENT_TEMPERATURE
= (13)¶
-
SENSOR_TYPE_VOLTAGE
= (15)¶
-
SENSOR_TYPE_CURRENT
= (16)¶
-
SENSOR_TYPE_COLOR
= (17)¶
-
-
-
file
ADXL345.h
- #include “hwlib.h”#include <cstdint>
Defines
-
XL345_RATE_3200
¶
-
XL345_RATE_1600
¶
-
XL345_RATE_800
¶
-
XL345_RATE_400
¶
-
XL345_RATE_200
¶
-
XL345_RATE_100
¶
-
XL345_RATE_50
¶
-
XL345_RATE_25
¶
-
XL345_RATE_12_5
¶
-
XL345_RATE_6_25
¶
-
XL345_RATE_3_125
¶
-
XL345_RATE_1_563
¶
-
XL345_RATE__782
¶
-
XL345_RATE__39
¶
-
XL345_RATE__195
¶
-
XL345_RATE__098
¶
-
XL345_RANGE_2G
¶
-
XL345_RANGE_4G
¶
-
XL345_RANGE_8G
¶
-
XL345_RANGE_16G
¶
-
XL345_DATA_JUST_RIGHT
¶
-
XL345_DATA_JUST_LEFT
¶
-
XL345_10BIT
¶
-
XL345_FULL_RESOLUTION
¶
-
XL345_INT_LOW
¶
-
XL345_INT_HIGH
¶
-
XL345_SPI3WIRE
¶
-
XL345_SPI4WIRE
¶
-
XL345_SELFTEST
¶
-
XL345_OVERRUN
¶
-
XL345_WATERMARK
¶
-
XL345_FREEFALL
¶
-
XL345_INACTIVITY
¶
-
XL345_ACTIVITY
¶
-
XL345_DOUBLETAP
¶
-
XL345_SINGLETAP
¶
-
XL345_DATAREADY
¶
-
XL345_WAKEUP_8HZ
¶
-
XL345_WAKEUP_4HZ
¶
-
XL345_WAKEUP_2HZ
¶
-
XL345_WAKEUP_1HZ
¶
-
XL345_SLEEP
¶
-
XL345_MEASURE
¶
-
XL345_STANDBY
¶
-
XL345_AUTO_SLEEP
¶
-
XL345_ACT_INACT_SERIAL
¶
-
XL345_ACT_INACT_CONCURRENT
¶
-
ADXL345_REG_DEVID
¶
-
ADXL345_REG_POWER_CTL
¶
-
ADXL345_REG_DATA_FORMAT
¶
-
ADXL345_REG_FIFO_CTL
¶
-
ADXL345_REG_BW_RATE
¶
-
ADXL345_REG_INT_ENALBE
¶
-
ADXL345_REG_INT_MAP
¶
-
ADXL345_REG_INT_SOURCE
¶
-
ADXL345_REG_DATA_FORMAT
-
ADXL345_REG_DATAX0
¶
-
ADXL345_REG_DATAX1
¶
-
ADXL345_REG_DATAY0
¶
-
ADXL345_REG_DATAY1
¶
-
ADXL345_REG_DATAZ0
¶
-
ADXL345_REG_DATAZ1
¶
-
-
file
am4096.hpp
- #include <bitset>#include <iostream>#include <vector>#include <ros/ros.h>#include <roboy_plexus/i2c.hpp>
-
file
armControl.hpp
- #include <ros/ros.h>#include <thread>#include <roboy_middleware_msgs/FingerCommand.h>#include <roboy_middleware_msgs/ArmStatus.h>#include <roboy_middleware_msgs/HandCommand.h>#include <roboy_middleware_msgs/JointController.h>#include <roboy_control_msgs/SetMode.h>#include <std_msgs/Float32.h>#include <std_srvs/SetBool.h>#include “roboy_plexus/myoControl.hpp”
Typedefs
-
typedef boost::shared_ptr<ArmControl>
ArmControlPtr
¶
-
typedef boost::shared_ptr<ArmControl>
-
file
controlActions.hpp
- #include <ros/ros.h>#include <ros/spinner.h>#include <ros/callback_queue.h>#include <actionlib/server/simple_action_server.h>#include <roboy_control_msgs/PerformMovementAction.h>#include <roboy_control_msgs/PerformMovementsAction.h>#include <actionlib_tutorials/FibonacciAction.h>#include <roboy_plexus/myoControl.hpp>
-
file
CRC32.h
- #include <cstdint>#include <cstddef>
-
file
hps_0.h
Defines
-
I2C_3_COMPONENT_TYPE
¶
-
I2C_3_COMPONENT_NAME
¶
-
I2C_3_BASE
¶
-
I2C_3_SPAN
¶
-
I2C_3_END
¶
-
I2C_1_COMPONENT_TYPE
¶
-
I2C_1_COMPONENT_NAME
¶
-
I2C_1_BASE
¶
-
I2C_1_SPAN
¶
-
I2C_1_END
¶
-
I2C_2_COMPONENT_TYPE
¶
-
I2C_2_COMPONENT_NAME
¶
-
I2C_2_BASE
¶
-
I2C_2_SPAN
¶
-
I2C_2_END
¶
-
I2C_0_COMPONENT_TYPE
¶
-
I2C_0_COMPONENT_NAME
¶
-
I2C_0_BASE
¶
-
I2C_0_SPAN
¶
-
I2C_0_END
¶
-
PIO_0_COMPONENT_TYPE
¶
-
PIO_0_COMPONENT_NAME
¶
-
PIO_0_BASE
¶
-
PIO_0_SPAN
¶
-
PIO_0_END
¶
-
PIO_0_BIT_CLEARING_EDGE_REGISTER
¶
-
PIO_0_BIT_MODIFYING_OUTPUT_REGISTER
¶
-
PIO_0_CAPTURE
¶
-
PIO_0_DATA_WIDTH
¶
-
PIO_0_DO_TEST_BENCH_WIRING
¶
-
PIO_0_DRIVEN_SIM_VALUE
¶
-
PIO_0_EDGE_TYPE
¶
-
PIO_0_FREQ
¶
-
PIO_0_HAS_IN
¶
-
PIO_0_HAS_OUT
¶
-
PIO_0_HAS_TRI
¶
-
PIO_0_IRQ_TYPE
¶
-
PIO_0_RESET_VALUE
¶
-
SWITCHES_COMPONENT_TYPE
¶
-
SWITCHES_COMPONENT_NAME
¶
-
SWITCHES_BASE
¶
-
SWITCHES_SPAN
¶
-
SWITCHES_END
¶
-
SWITCHES_BIT_CLEARING_EDGE_REGISTER
¶
-
SWITCHES_BIT_MODIFYING_OUTPUT_REGISTER
¶
-
SWITCHES_CAPTURE
¶
-
SWITCHES_DATA_WIDTH
¶
-
SWITCHES_DO_TEST_BENCH_WIRING
¶
-
SWITCHES_DRIVEN_SIM_VALUE
¶
-
SWITCHES_EDGE_TYPE
¶
-
SWITCHES_FREQ
¶
-
SWITCHES_HAS_IN
¶
-
SWITCHES_HAS_OUT
¶
-
SWITCHES_HAS_TRI
¶
-
SWITCHES_IRQ_TYPE
¶
-
SWITCHES_RESET_VALUE
¶
-
LED_COMPONENT_TYPE
¶
-
LED_COMPONENT_NAME
¶
-
LED_BASE
¶
-
LED_SPAN
¶
-
LED_END
¶
-
LED_BIT_CLEARING_EDGE_REGISTER
¶
-
LED_BIT_MODIFYING_OUTPUT_REGISTER
¶
-
LED_CAPTURE
¶
-
LED_DATA_WIDTH
¶
-
LED_DO_TEST_BENCH_WIRING
¶
-
LED_DRIVEN_SIM_VALUE
¶
-
LED_EDGE_TYPE
¶
-
LED_FREQ
¶
-
LED_HAS_IN
¶
-
LED_HAS_OUT
¶
-
LED_HAS_TRI
¶
-
LED_IRQ_TYPE
¶
-
LED_RESET_VALUE
¶
-
ADC_LTC2308_0_COMPONENT_TYPE
¶
-
ADC_LTC2308_0_COMPONENT_NAME
¶
-
ADC_LTC2308_0_BASE
¶
-
ADC_LTC2308_0_SPAN
¶
-
ADC_LTC2308_0_END
¶
-
SYSID_QSYS_COMPONENT_TYPE
¶
-
SYSID_QSYS_COMPONENT_NAME
¶
-
SYSID_QSYS_BASE
¶
-
SYSID_QSYS_SPAN
¶
-
SYSID_QSYS_END
¶
-
SYSID_QSYS_ID
¶
-
SYSID_QSYS_TIMESTAMP
¶
-
JTAG_UART_COMPONENT_TYPE
¶
-
JTAG_UART_COMPONENT_NAME
¶
-
JTAG_UART_BASE
¶
-
JTAG_UART_SPAN
¶
-
JTAG_UART_END
¶
-
JTAG_UART_IRQ
¶
-
JTAG_UART_READ_DEPTH
¶
-
JTAG_UART_READ_THRESHOLD
¶
-
JTAG_UART_WRITE_DEPTH
¶
-
JTAG_UART_WRITE_THRESHOLD
¶
-
PWM_0_COMPONENT_TYPE
¶
-
PWM_0_COMPONENT_NAME
¶
-
PWM_0_BASE
¶
-
PWM_0_SPAN
¶
-
PWM_0_END
¶
-
MYOCONTROL_2_COMPONENT_TYPE
¶
-
MYOCONTROL_2_COMPONENT_NAME
¶
-
MYOCONTROL_2_BASE
¶
-
MYOCONTROL_2_SPAN
¶
-
MYOCONTROL_2_END
¶
-
MYOCONTROL_0_COMPONENT_TYPE
¶
-
MYOCONTROL_0_COMPONENT_NAME
¶
-
MYOCONTROL_0_BASE
¶
-
MYOCONTROL_0_SPAN
¶
-
MYOCONTROL_0_END
¶
-
MYOCONTROL_1_COMPONENT_TYPE
¶
-
MYOCONTROL_1_COMPONENT_NAME
¶
-
MYOCONTROL_1_BASE
¶
-
MYOCONTROL_1_SPAN
¶
-
MYOCONTROL_1_END
¶
-
-
file
i2c.hpp
- #include <ros/ros.h>#include <stdio.h>#include <unistd.h>#include <cstdint>#include <fcntl.h>#include “hwlib.h”#include “hps_0.h”#include <vector>
-
file
myoControl.hpp
- #include <vector>#include <map>#include <iostream>#include <math.h>#include <chrono>#include <fstream>#include <unistd.h>#include <tinyxml.h>#include <string>#include <sstream>#include <common_utilities/CommonDefinitions.h>#include <roboy_plexus/timer.hpp>#include <ros/ros.h>
Defines
-
MOTORS_PER_MYOCONTROL
¶
-
IORD
(base, reg)
-
IOWR
(base, reg, data)
-
MYO_READ_Kp
(base, motor)¶
-
MYO_READ_Ki
(base, motor)¶
-
MYO_READ_Kd
(base, motor)¶
-
MYO_READ_sp
(base, motor)¶
-
MYO_READ_forwardGain
(base, motor)¶
-
MYO_READ_outputPosMax
(base, motor)¶
-
MYO_READ_outputNegMax
(base, motor)¶
-
MYO_READ_IntegralPosMax
(base, motor)¶
-
MYO_READ_IntegralNegMax
(base, motor)¶
-
MYO_READ_deadBand
(base, motor)¶
-
MYO_READ_control
(base, motor)¶
-
MYO_READ_position
(base, motor)¶
-
MYO_READ_velocity
(base, motor)¶
-
MYO_READ_current
(base, motor)¶
-
MYO_READ_displacement
(base, motor)¶
-
MYO_READ_pwmRef
(base, motor)¶
-
MYO_READ_update_frequency
(base)¶
-
MYO_READ_power_sense
(base)¶
-
MYO_READ_gpio
(base)¶
-
MYO_READ_myo_brick_motor_angle
(base, motor)¶
-
MYO_READ_myo_brick
(base)¶
-
MYO_READ_myo_brick_device_id
(base, motor)¶
-
MYO_READ_myo_brick_gear_box_ratio
(base, motor)¶
-
MYO_READ_myo_brick_encoder_multiplier
(base, motor)¶
-
MYO_READ_outputDivider
(base, motor)¶
-
MYO_READ_myo_brick_i2c_ack_error
(base, motor)¶
-
MYO_READ_elbow_joint_angle_error
(base)¶
-
MYO_READ_elbow_Kp_joint_angle
(base)¶
-
MYO_READ_elbow_Kd_joint_angle
(base)¶
-
MYO_READ_elbow_agonist
(base)¶
-
MYO_READ_elbow_antagonist
(base)¶
-
MYO_READ_elbow_joint_angle_setpoint
(base)¶
-
MYO_READ_elbow_joint_angle_device_id
(base)¶
-
MYO_READ_elbow_joint_angle
(base)¶
-
MYO_READ_elbow_joint_angle_offset
(base)¶
-
MYO_READ_elbow_joint_control_result
(base)¶
-
MYO_READ_elbow_joint_pretension
(base)¶
-
MYO_READ_elbow_joint_deadband
(base)¶
-
MYO_READ_hand_control
(base)¶
-
MYO_READ_arm_board_device_id
(base, motor)¶
-
MYO_READ_motor0
(base, board)¶
-
MYO_READ_motor1
(base, board)¶
-
MYO_READ_motor2
(base, board)¶
-
MYO_READ_motor3
(base, board)¶
-
MYO_READ_motor4
(base, board)¶
-
MYO_READ_arm_board_ack_error
(base)¶
-
MYO_READ_elbow_smooth_distance
(base)¶
-
MYO_READ_wrist_joint_angle_error
(base)¶
-
MYO_READ_wrist_Kp_joint_angle
(base)¶
-
MYO_READ_wrist_Kd_joint_angle
(base)¶
-
MYO_READ_wrist_agonist
(base)¶
-
MYO_READ_wrist_antagonist
(base)¶
-
MYO_READ_wrist_joint_angle_setpoint
(base)¶
-
MYO_READ_wrist_joint_angle_device_id
(base)¶
-
MYO_READ_wrist_joint_angle
(base)¶
-
MYO_READ_wrist_joint_angle_offset
(base)¶
-
MYO_READ_wrist_joint_control_result
(base)¶
-
MYO_READ_wrist_joint_pretension
(base)¶
-
MYO_READ_wrist_joint_deadband
(base)¶
-
MYO_READ_wrist_smooth_distance
(base)¶
-
MYO_READ_myo_brick_motor_raw_angle
(base, motor)¶
-
MYO_READ_myo_brick_motor_raw_angle_prev
(base, motor)¶
-
MYO_READ_myo_brick_motor_offset_angle
(base, motor)¶
-
MYO_READ_myo_brick_motor_relative_angle
(base, motor)¶
-
MYO_READ_myo_brick_motor_angle_revolution_counter
(base, motor)¶
-
MYO_WRITE_Kp
(base, motor, data)¶
-
MYO_WRITE_Ki
(base, motor, data)¶
-
MYO_WRITE_Kd
(base, motor, data)¶
-
MYO_WRITE_sp
(base, motor, data)¶
-
MYO_WRITE_forwardGain
(base, motor, data)¶
-
MYO_WRITE_outputPosMax
(base, motor, data)¶
-
MYO_WRITE_outputNegMax
(base, motor, data)¶
-
MYO_WRITE_IntegralPosMax
(base, motor, data)¶
-
MYO_WRITE_IntegralNegMax
(base, motor, data)¶
-
MYO_WRITE_deadBand
(base, motor, data)¶
-
MYO_WRITE_control
(base, motor, data)¶
-
MYO_WRITE_reset_myo_control
(base, data)¶
-
MYO_WRITE_spi_activated
(base, data)¶
-
MYO_WRITE_reset_controller
(base, motor)¶
-
MYO_WRITE_update_frequency
(base, data)¶
-
MYO_WRITE_gpio
(base, data)¶
-
MYO_WRITE_myo_brick
(base, data)¶
-
MYO_WRITE_myo_brick_device_id
(base, motor, data)¶
-
MYO_WRITE_myo_brick_gear_box_ratio
(base, motor, data)¶
-
MYO_WRITE_myo_brick_encoder_multiplier
(base, motor, data)¶
-
MYO_WRITE_outputDivider
(base, motor, data)¶
-
MYO_WRITE_elbow_joint_control
(base, data)¶
-
MYO_WRITE_elbow_joint_angle_device_id
(base, data)¶
-
MYO_WRITE_elbow_agonist
(base, motor)¶
-
MYO_WRITE_elbow_antagonist
(base, motor)¶
-
MYO_WRITE_elbow_Kp_joint_angle
(base, data)¶
-
MYO_WRITE_elbow_Kd_joint_angle
(base, data)¶
-
MYO_WRITE_elbow_joint_angle_offset
(base, data)¶
-
MYO_WRITE_elbow_joint_pretension
(base, data)¶
-
MYO_WRITE_elbow_joint_deadband
(base, data)¶
-
MYO_WRITE_elbow_joint_angle_setpoint
(base, data)¶
-
MYO_WRITE_hand_control
(base, data)¶
-
MYO_WRITE_arm_board_device_id
(base, board, data)¶
-
MYO_WRITE_motor0
(base, board, data)¶
-
MYO_WRITE_motor1
(base, board, data)¶
-
MYO_WRITE_motor2
(base, board, data)¶
-
MYO_WRITE_motor3
(base, board, data)¶
-
MYO_WRITE_motor4
(base, board, data)¶
-
MYO_WRITE_elbow_smooth_distance
(base, data)¶
-
MYO_WRITE_wrist_joint_control
(base, data)¶
-
MYO_WRITE_wrist_joint_angle_device_id
(base, data)¶
-
MYO_WRITE_wrist_agonist
(base, motor)¶
-
MYO_WRITE_wrist_antagonist
(base, motor)¶
-
MYO_WRITE_wrist_Kp_joint_angle
(base, data)¶
-
MYO_WRITE_wrist_Kd_joint_angle
(base, data)¶
-
MYO_WRITE_wrist_joint_angle_offset
(base, data)¶
-
MYO_WRITE_wrist_joint_pretension
(base, data)¶
-
MYO_WRITE_wrist_joint_deadband
(base, data)¶
-
MYO_WRITE_wrist_joint_angle_setpoint
(base, data)¶
-
MYO_WRITE_wrist_smooth_distance
(base, data)¶
-
NUMBER_OF_ADC_SAMPLES
¶
-
MOTOR_BOARD_COMMUNICATION_FREQUENCY
¶
Typedefs
-
typedef boost::shared_ptr<MyoControl>
MyoControlPtr
¶
-
-
file
roboyPlexus.hpp
- #include <ros/ros.h>#include <vector>#include <roboy_plexus/myoControl.hpp>#include “roboy_plexus/controlActions.hpp”#include <roboy_plexus/am4096.hpp>#include <roboy_plexus/Adafruit_LSM9DS1.hpp>#include <roboy_plexus/A1335.hpp>#include <roboy_middleware_msgs/ADCvalue.h>#include <roboy_middleware_msgs/ControlMode.h>#include <roboy_middleware_msgs/DarkRoom.h>#include <roboy_middleware_msgs/DarkRoomOOTX.h>#include <roboy_middleware_msgs/DarkRoomStatus.h>#include <roboy_middleware_msgs/MagneticSensor.h>#include <roboy_middleware_msgs/MotorAngle.h>#include <roboy_middleware_msgs/MotorCalibrationService.h>#include <roboy_middleware_msgs/MotorCommand.h>#include <roboy_middleware_msgs/MotorStatus.h>#include <roboy_middleware_msgs/MotorConfigService.h>#include <roboy_middleware_msgs/MyoBrickCalibrationService.h>#include <roboy_middleware_msgs/SetInt16.h>#include <roboy_control_msgs/Behavior.h>#include <roboy_control_msgs/StartRecordTrajectory.h>#include <roboy_middleware_msgs/SystemCheck.h>#include <roboy_control_msgs/ListItems.h>#include <std_srvs/SetBool.h>#include <std_msgs/Bool.h>#include <std_msgs/Float32MultiArray.h>#include <std_msgs/Empty.h>#include <std_msgs/Int32.h>#include <std_msgs/Float32.h>#include <sensor_msgs/Imu.h>#include <thread>#include <map>#include <chrono>#include <algorithm>#include <roboy_plexus/ADXL345.h>#include <linux/i2c-dev.h>#include <sys/ioctl.h>#include “hwlib.h”#include “roboy_plexus/half.hpp”#include “roboy_plexus/CRC32.h”#include <bitset>#include “roboy_plexus/tlv493d_fpga.hpp”#include <sys/types.h>#include <dirent.h>#include <sys/stat.h>#include <common_utilities/CommonDefinitions.h>
-
file
tlv493d.hpp
- #include <stdint.h>#include “i2c.hpp”#include <vector>#include <ros/ros.h>
-
file
tlv493d_fpga.hpp
- #include <stdint.h>#include <vector>#include <ros/ros.h>
Defines
-
IORD
(base, reg)
-
IOWR
(base, reg, data)
-
-
file
A1335.cpp
- #include “roboy_plexus/A1335.hpp”
-
file
Adafruit_BNO055.cpp
- #include <math.h>#include <limits.h>#include <roboy_plexus/Adafruit_Sensor.h>#include “roboy_plexus/Adafruit_BNO055.hpp”
-
file
Adafruit_LSM9DS1.cpp
- #include “roboy_plexus/Adafruit_LSM9DS1.hpp”
-
file
am4096.cpp
- #include <roboy_plexus/am4096.hpp>
-
file
armControl.cpp
- #include “roboy_plexus/armControl.hpp”
-
file
controlActions.cpp
- #include “roboy_plexus/controlActions.hpp”
-
file
CRC32.cpp
- #include “roboy_plexus/CRC32.h”
Variables
-
const uint32_t crc32_table [] FLASH_PROGMEM= { 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c}
-
-
file
i2c.cpp
- #include “roboy_plexus/i2c.hpp”
-
file
main.cpp
- #include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <sys/mman.h>#include <signal.h>#include <stdlib.h>#include “hwlib.h”#include “socal/hps.h”#include “roboy_plexus/hps_0.h”#include “roboy_plexus/roboyPlexus.hpp”
Variables
-
int32_t *
h2p_lw_sysid_addr
¶
-
int32_t *
h2p_lw_led_addr
¶
-
int32_t *
h2p_lw_adc_addr
¶
-
int32_t *
h2p_lw_switches_addr
¶
-
int32_t *
h2p_lw_darkroom_addr
¶
-
int32_t *
h2p_lw_a1339_addr
¶
-
vector<int32_t *>
h2p_lw_darkroom_ootx_addr
¶
-
vector<int32_t *>
h2p_lw_myo_addr
¶
-
vector<int32_t *>
h2p_lw_i2c_addr
¶
-
MyoControlPtr
myoControl
¶
-
int32_t *
-
file
myoControl.cpp
- #include “roboy_plexus/myoControl.hpp”
-
file
roboyPlexus.cpp
- #include <roboy_plexus/roboyPlexus.hpp>
-
file
ROS_MASTER_URI_receiver.cpp
- #include <ros/ros.h>#include <common_utilities/UDPSocket.hpp>
Functions
-
int
main
(int argc, char *argv[])
Variables
-
const char* key= "The path of the righteous man is beset on all sides by the inequities of the " "selfish and the tyranny of evil men. Blessed is he who, in the name of " "charity and good will, shepherds the weak through the valley of the darkness. " "For he is truly his brother's keeper and the finder of lost children. And I " "will strike down upon thee with great vengeance and furious anger those who " "attempt to poison and destroy my brothers. And you will know I am the Lord " "when I lay my vengeance upon you0"
-
int
-
file
tlv493d.cpp
- #include “roboy_plexus/tlv493d.hpp”
-
file
tlv493d_fpga.cpp
- #include “roboy_plexus/tlv493d_fpga.hpp”
-
file
UDPSocket.cpp
- #include <ifaddrs.h>#include “common_utilities/UDPSocket.hpp”
-
group
test
This is the first group.
-
dir
/home/docs/checkouts/readthedocs.org/user_builds/roboy-plexus/checkouts/latest/include
-
dir
/home/docs/checkouts/readthedocs.org/user_builds/roboy-plexus/checkouts/latest/include/roboy_plexus
-
dir
/home/docs/checkouts/readthedocs.org/user_builds/roboy-plexus/checkouts/latest/src