Skip to content
Snippets Groups Projects
Commit ada1ee49 authored by Sergi Hernandez's avatar Sergi Hernandez
Browse files

Changed the names of some registers.

Added the registers for the new XC,XM and XH families.
parent 7ebe214e
No related branches found
No related tags found
No related merge requests found
This diff is collapsed.
......@@ -2,6 +2,7 @@
#define _DYNAMIXEL_MOTOR_H
#include "dynamixelserver.h"
#include "dynamixel_registers.h"
#include "threadserver.h"
#include "eventserver.h"
#include "ftdimodule.h"
......@@ -30,6 +31,7 @@ typedef struct
unsigned int gear_ratio;
unsigned int encoder_resolution;
bool pid_control;
bool multi_turn;
double max_angle;
double center_angle;
double max_speed;
......@@ -59,7 +61,7 @@ typedef struct
double max_temperature;
double max_voltage;
double min_voltage;
double max_torque;
double max_pwm;
unsigned short int punch;
}TDynamixel_config;
......@@ -112,7 +114,7 @@ class CDynamixelMotor
* \brief
*
*/
unsigned short int *registers;
TDynReg *registers;
protected:
/**
* \brief
......@@ -237,22 +239,22 @@ class CDynamixelMotor
* \brief
*
*/
double get_max_torque(void);
double get_max_pwm(void);
/**
* \brief
*
*/
double get_limit_torque(void);
double get_pwm_limit(void);
/**
* \brief
*
*/
void set_max_torque(double torque_ratio);
void set_max_pwm(double torque_ratio);
/**
* \brief
*
*/
void set_limit_torque(double torque_ratio);
void set_pwm_limit(double torque_ratio);
/**
* \brief
*
......
This diff is collapsed.
......@@ -66,7 +66,7 @@ class CDynamixelMotorGroup
* \brief
*
*/
std::vector<unsigned short int *>registers;
std::vector<TDynReg *>registers;
protected:
/**
* \brief
......@@ -142,7 +142,7 @@ class CDynamixelMotorGroup
* \brief
*
*/
void set_max_torque(unsigned int index,double torque_ratio);
void set_max_pwm(unsigned int index,double torque_ratio);
/**
* \brief
*
......@@ -152,7 +152,7 @@ class CDynamixelMotorGroup
* \brief
*
*/
double get_max_torque(unsigned int index);
double get_max_pwm(unsigned int index);
/**
* \brief
*
......
#include "dynamixel_registers.h"
unsigned short int std_compl_reg[39]={std_model_number,
std_firmware_version,
std_id,
std_baudrate,
std_return_delay_time,
std_cw_angle_limit,
std_ccw_angle_limit,
(unsigned short int)-1,
std_temp_limit,
std_low_voltage_limit,
std_high_voltage_limit,
std_max_torque,
std_return_level,
std_alarm_led,
std_alarm_shtdwn,
std_down_cal,
std_up_cal,
std_torque_en,
std_led,
(unsigned short int)-1,
(unsigned short int)-1,
(unsigned short int)-1,
std_cw_comp_margin,
std_ccw_comp_margin,
std_cw_comp_slope,
std_ccw_comp_slope,
std_goal_pos,
std_goal_speed,
std_torque_limit,
std_current_pos,
std_current_speed,
std_current_load,
std_current_voltage,
std_current_temp,
std_reg_inst,
(unsigned short int)-1,
std_moving,
std_lock,
std_punch};
TDynReg ax_reg[NUM_REG]={// Info
{0x0000,2,true},
{0xFFFF,0,false},
{0x0002,1,true},
{0x0003,1,true},
{0x0004,1,true},
{0x0005,1,true},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0010,1,true},
// Configuration
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0006,2,true},
{0x0008,2,true},
{0x000B,1,true},
{0x000C,1,true},
{0x000D,1,true},
{0x000E,2,true},
{0x0022,2,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
// Status
{0x0011,1,true},
{0x0012,1,true},
{0x0019,1,false},
{0xFFFF,0,false},
{0x002E,1,false},
{0xFFFF,0,false},
{0x002F,1,false},
{0x002C,1,false},
{0xFFFF,0,false},
// Control
{0x0018,1,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x001A,1,false},
{0x001B,1,false},
{0x001C,1,false},
{0x001D,1,false},
{0x0030,2,false},
// Set point
{0x001E,2,false},
{0x0020,2,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
// Feedback
{0x0024,2,false},
{0x0026,2,false},
{0x0028,2,false},
{0x002A,1,false},
{0x002B,1,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false}};
unsigned short int std_pid_reg[39]={std_model_number,
std_firmware_version,
std_id,
std_baudrate,
std_return_delay_time,
std_cw_angle_limit,
std_ccw_angle_limit,
(unsigned short int)-1,
std_temp_limit,
std_low_voltage_limit,
std_high_voltage_limit,
std_max_torque,
std_return_level,
std_alarm_led,
std_alarm_shtdwn,
std_down_cal,
std_up_cal,
std_torque_en,
std_led,
std_pid_p,
std_pid_i,
std_pid_d,
(unsigned short int)-1,
(unsigned short int)-1,
(unsigned short int)-1,
(unsigned short int)-1,
std_goal_pos,
std_goal_speed,
std_torque_limit,
std_current_pos,
std_current_speed,
std_current_load,
std_current_voltage,
std_current_temp,
std_reg_inst,
(unsigned short int)-1,
std_moving,
std_lock,
std_punch};
TDynReg mx_1_0_reg[NUM_REG]={// Info
{0x0000,2,true},
{0xFFFF,0,false},
{0x0002,1,true},
{0x0003,1,true},
{0x0004,1,true},
{0x0005,1,true},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0010,1,true},
// Configuration
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0006,2,true},
{0x0008,2,true},
{0x000B,1,true},
{0x000C,1,true},
{0x000D,1,true},
{0x000E,2,true},
{0x0022,2,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0014,2,true},
{0x0016,1,true},
// Status
{0x0011,1,true},
{0x0012,1,true},
{0x0019,1,false},
{0xFFFF,0,false},
{0x002E,1,false},
{0xFFFF,0,false},
{0x002F,1,false},
{0x002C,1,false},
{0xFFFF,0,false},
// Control
{0x0018,1,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x001C,1,false},
{0x001B,1,false},
{0x001A,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0030,2,false},
// Set point
{0x001E,2,false},
{0x0020,2,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0049,1,false},
{0xFFFF,0,false},
// Feedback
{0x0024,2,false},
{0x0026,2,false},
{0x0028,2,false},
{0x002A,1,false},
{0x002B,1,false},
{0xFFFF,0,false},
{0x0032,2,false},
{0xFFFF,0,false},
{0xFFFF,0,false}};
unsigned short int xl_reg[39]={xl_model_number,
xl_firmware_version,
xl_id,
xl_baudrate,
xl_return_delay_time,
xl_cw_angle_limit,
xl_ccw_angle_limit,
xl_control_mode,
xl_temp_limit,
xl_low_voltage_limit,
xl_high_voltage_limit,
xl_max_torque,
xl_return_level,
xl_alarm_shtdwn,
xl_alarm_shtdwn,
xl_down_cal,
xl_up_cal,
xl_torque_en,
xl_led,
xl_pid_p,
xl_pid_i,
xl_pid_d,
(unsigned short int)-1,
(unsigned short int)-1,
(unsigned short int)-1,
(unsigned short int)-1,
xl_goal_pos,
xl_goal_speed,
xl_goal_torque,
xl_current_pos,
xl_current_speed,
xl_current_load,
xl_current_voltage,
xl_current_temp,
xl_reg_inst,
xl_moving,
(unsigned short int)-1,
xl_hardware_error,
xl_punch};
TDynReg mx_106_1_0_reg[NUM_REG]={// Info
{0x0000,2,true},
{0xFFFF,0,false},
{0x0002,1,true},
{0x0003,1,true},
{0x0004,1,true},
{0x0005,1,true},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0010,1,true},
// Configuration
{0x000A,1,true},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0006,2,true},
{0x0008,2,true},
{0x000B,1,true},
{0x000C,1,true},
{0x000D,1,true},
{0x000E,2,true},
{0x0022,2,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0014,2,true},
{0x0016,1,true},
// Status
{0x0011,1,true},
{0x0012,1,true},
{0x0019,1,false},
{0xFFFF,0,false},
{0x002E,1,false},
{0xFFFF,0,false},
{0x002F,1,false},
{0x002C,1,false},
{0xFFFF,0,false},
// Control
{0x0018,1,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x001C,1,false},
{0x001B,1,false},
{0x001A,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0030,2,false},
// Set point
{0x001E,2,false},
{0x0020,2,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0049,1,false},
{0xFFFF,0,false},
// Feedback
{0x0024,2,false},
{0x0026,2,false},
{0x0028,2,false},
{0x002A,1,false},
{0x002B,1,false},
{0xFFFF,0,false},
{0x0032,2,false},
{0xFFFF,0,false},
{0xFFFF,0,false}};
TDynReg xl_reg[NUM_REG]={// Info
{0x0000,2,true},
{0xFFFF,0,false},
{0x0002,1,true},
{0x0003,1,true},
{0x0004,1,true},
{0x0005,1,true},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0011,1,true},
// Configuration
{0xFFFF,0,false},
{0x000B,1,true},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0006,2,true},
{0x0008,2,true},
{0x000C,1,true},
{0x000D,1,true},
{0x000E,1,true},
{0x000F,2,true},
{0x0023,2,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
// Status
{0x0012,1,true},
{0x0012,1,true},
{0x0019,1,false},
{0xFFFF,0,false},
{0x0031,1,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x002F,1,false},
{0x0032,1,false},
// Control
{0x0018,1,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x001D,1,false},
{0x001C,1,false},
{0x001B,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0033,2,false},
// Set point
{0x001E,2,false},
{0x0020,2,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0x0049,1,false},
{0xFFFF,0,false},
// Feedback
{0x0025,2,false},
{0x0027,2,false},
{0x0029,2,false},
{0x002D,1,false},
{0x002E,1,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false},
{0xFFFF,0,false}};
#ifndef _DYNAMIXEL_REGISTERS_H
#define _DYNAMIXEL_REGISTERS_H
extern unsigned short int std_compl_reg[39];
extern unsigned short int std_pid_reg[39];
extern unsigned short int xl_reg[39];
#define NUM_REG 62
typedef struct{
unsigned short int address;
unsigned char size;
bool eeprom;
}TDynReg;
extern TDynReg ax_reg[NUM_REG];
extern TDynReg mx_1_0_reg[NUM_REG];
extern TDynReg mx_106_1_0_reg[NUM_REG];
extern TDynReg xl_reg[NUM_REG];
typedef enum {
// [Access] [Description]
// EEPROM Area
model_number=0, // (R) Model Number
// Info
model_number=0, // (R) Model Number
model_info, // (R)
firmware_version, // (R) Version of the Firmware
id, // (RW) ID of Dynamixel
baudrate, // (RW) Baud Rate of Dynamixel
return_delay_time, // (RW) Return Delay Time
cw_angle_limit, // (RW) Clockwise Angle Limit
ccw_angle_limit, // (RW) Counterclockwise Angle Limit
dyn_control_mode, // (RW) Joint or wheel mode
temp_limit, // (RW) Internal Temperature Limit
low_voltage_limit, // (RW) Lowest Voltage Limit
high_voltage_limit, // (RW) Highest Voltage Limit
max_torque, // (RW) Maximum Torque
second_id, // (RW)
protocol, // (RW)
return_level, // (RW) Status Return Level
// Configuration
drive_mode, // (RW) Drive mode
op_mode, // (RW) Joint or wheel mode
homming_offset, // (RW)
moving_threshold, // (RW)
min_angle_limit, // (RW) Clockwise Angle Limit
max_angle_limit, // (RW) Counterclockwise Angle Limit
temp_limit, // (RW) Internal Temperature Limit
min_voltage_limit, // (RW) Lowest Voltage Limit
max_voltage_limit, // (RW) Highest Voltage Limit
pwm_limit, // (RW) Maximum Torque
max_pwm, // (RW) Maximum Torque
current_limit, // (RW)
max_current, // (RW)
velocity_limit, // (RW)
multi_turn_off, // (RW) Multi turn offset position
resolution_div, // (RW) Resolution divider
// Status
alarm_led, // (RW) LED for Alarm
alarm_shtdwn, // (RW) Shutdown for Alarm
down_cal, // (RW)
up_cal, // (RW)
// RAM Area
torque_en, // (RW) Torque On/Off
led, // (RW) LED On/Off
pid_p, // (RW)
pid_i, // (RW)
pid_d, // (RW)
bus_watchdog, // (RW)
moving, // (R) Means if there is any movement
moving_status, // (R)
lock, // (RW) Locking EEPROM
reg_inst, // (RW) Means if Instruction is registered
hardware_error, // (R) Means if there is any movement
// control
torque_en, // (RW) Torque On/Off
vel_pid_i, // (RW)
vel_pid_p, // (RW)
pos_pid_p, // (RW)
pos_pid_i, // (RW)
pos_pid_d, // (RW)
feedfwd_gain_2, // (RW)
feedfwd_gain_1, // (RW)
cw_comp_margin, // (RW) CW Compliance Margin
ccw_comp_margin, // (RW) CCW Compliance Margin
cw_comp_slope, // (RW) CW Compliance Slope
ccw_comp_slope, // (RW) CCW Compliance Slope
punch, // (RW) Punch
// Set point
goal_pos, // (RW) Goal Position
goal_speed, // (RW) Moving Speed
torque_limit, // (RW) Torque Limit
goal_pwn, // (RW)
goal_current, // (RW)
profile_accel, // (RW)
profile_vel, // (RW)
// Feedback
current_pos, // (R) Current Position
current_speed, // (R) Current Speed
current_load, // (R) Current Load
current_voltage, // (R) Current Voltage
current_temp, // (RW) Current Temperature
reg_inst, // (RW) Means if Instruction is registered
moving, // (R) Means if there is any movement
lock, // (RW) Locking EEPROM
hardware_error, // (R) Means if there is any movement
punch // (RW) Punch
current_temp, // (R) Current Temperature
current_pwm, // (R)
realtime_tick, // (R) Realtime tick
velocity_traj, // (R)
pos_traj // (R)
} reg_id;
typedef enum {
// [Access] [Description]
// EEPROM Area
std_model_number=0x00, // (R) Model Number
std_firmware_version=0x02, // (R) Version of the Firmware
std_id=0x03, // (RW) ID of Dynamixel
std_baudrate=0x04, // (RW) Baud Rate of Dynamixel
std_return_delay_time=0x05, // (RW) Return Delay Time
std_cw_angle_limit=0x06, // (RW) Clockwise Angle Limit
std_ccw_angle_limit=0x08, // (RW) Counterclockwise Angle Limit
std_temp_limit=0x0B, // (RW) Internal Temperature Limit
std_low_voltage_limit=0x0C, // (RW) Lowest Voltage Limit
std_high_voltage_limit=0x0D, // (RW) Highest Voltage Limit
std_max_torque=0x0E, // (RW) Maximum Torque
std_return_level=0x10, // (RW) Status Return Level
std_alarm_led=0x11, // (RW) LED for Alarm
std_alarm_shtdwn=0x12, // (RW) Shutdown for Alarm
std_down_cal=0x14, // (RW)
std_up_cal=0x16, // (RW)
// RAM Area
std_torque_en=0x18, // (RW) Torque On/Off
std_led=0x19, // (RW) LED On/Off
std_pid_p=0x1A, // (RW)
std_pid_i=0x1B, // (RW)
std_pid_d=0x1C, // (RW)
std_cw_comp_margin=0x1A, // (RW) CW Compliance Margin
std_ccw_comp_margin=0x1B, // (RW) CCW Compliance Margin
std_cw_comp_slope=0x1C, // (RW) CW Compliance Slope
std_ccw_comp_slope=0x1D, // (RW) CCW Compliance Slope
std_goal_pos=0x1E, // (RW) Goal Position
std_goal_speed=0x20, // (RW) Moving Speed
std_torque_limit=0x22, // (RW) Torque Limit
std_current_pos=0x24, // (R) Current Position
std_current_speed=0x26, // (R) Current Speed
std_current_load=0x28, // (R) Current Load
std_current_voltage=0x2A, // (R) Current Voltage
std_current_temp=0x2B, // (RW) Current Temperature
std_reg_inst=0x2C, // (RW) Means if Instruction is registered
std_moving=0x2E, // (R) Means if there is any movement
std_lock=0x2F, // (RW) Locking EEPROM
std_punch=0x30 // (RW) Punch
} std_reg_id;
typedef enum {
// [Access] [Description]
// EEPROM Area
xl_model_number=0x00, // (R) Model Number
xl_firmware_version=0x02, // (R) Version of the Firmware
xl_id=0x03, // (RW) ID of Dynamixel
xl_baudrate=0x04, // (RW) Baud Rate of Dynamixel
xl_return_delay_time=0x05, // (RW) Return Delay Time
xl_cw_angle_limit=0x06, // (RW) Clockwise Angle Limit
xl_ccw_angle_limit=0x08, // (RW) Counterclockwise Angle Limit
xl_control_mode=0x0B, // (RW) Joint or wheel mode
xl_temp_limit=0x0C, // (RW) Internal Temperature Limit
xl_low_voltage_limit=0x0D, // (RW) Lowest Voltage Limit
xl_high_voltage_limit=0x0E, // (RW) Highest Voltage Limit
xl_max_torque=0x0F, // (RW) Maximum Torque
xl_return_level=0x11, // (RW) Status Return Level
xl_alarm_shtdwn=0x12, // (RW) Shutdown for Alarm
xl_down_cal=0x14, // (RW)
xl_up_cal=0x16, // (RW)
// RAM Area
xl_torque_en=0x18, // (RW) Torque On/Off
xl_led=0x19, // (RW) LED On/Off
xl_pid_d=0x1B, // (RW)
xl_pid_i=0x1C, // (RW)
xl_pid_p=0x1D, // (RW)
xl_goal_pos=0x1E, // (RW) Goal Position
xl_goal_speed=0x20, // (RW) Moving Speed
xl_goal_torque=0x23, // (RW) Torque Limit
xl_current_pos=0x25, // (R) Current Position
xl_current_speed=0x27, // (R) Current Speed
xl_current_load=0x29, // (R) Current Load
xl_current_voltage=0x2D, // (R) Current Voltage
xl_current_temp=0x2E, // (RW) Current Temperature
xl_reg_inst=0x2F, // (RW) Means if Instruction is registered
xl_moving=0x31, // (R) Means if there is any movement
xl_hardware_error=0x32, // (R) Means if there is any movement
xl_punch=0x33 // (RW) Punch
} xl_reg_id;
#endif
......@@ -11,8 +11,8 @@ std::string config_file="../src/xml/dyn_servo_config.xml";
int main(int argc, char *argv[])
{
std::string serial="A600cVjj"; //extracted from dynamixel library's test_dynamixel_server_no_scan or with 'dmesg' command: "SerialNumber: A600cVjj"
int baudrate = 57600; //57600 or 1000000
std::string serial="A400gavm"; //extracted from dynamixel library's test_dynamixel_server_no_scan or with 'dmesg' command: "SerialNumber: A600cVjj"
int baudrate = 1000000; //57600 or 1000000
int device = 1; //extracted from dynamixel library's test_dynamixel_server_no_scan
CDynamixelServerFTDI *dyn_server=CDynamixelServerFTDI::instance();
......@@ -34,7 +34,7 @@ int main(int argc, char *argv[])
/////////////////////////////////////////////////////////////////////////
////INFO
/////////////////////////////////////////////////////////////////////////
/*
/*
std::cout << "-----------------------------------------------------------" << std::endl;
cont->get_servo_info(info);
std::cout << "[INFO]: Servo model: " << info.model << std::endl;
......@@ -76,13 +76,13 @@ int main(int argc, char *argv[])
std::cout << "[INFO]: - Instruction Error:\t" << bool(sd_alarms&0x40) << std::endl;
led_alarms=cont->get_led_alarms();
std::cout << "[INFO]: LED alarm flags: " << std::hex << (int)led_alarms << std::endl;
std::cout << "[INFO]: max_torque: " << std::dec << cont->get_max_torque() << std::endl;
std::cout << "[INFO]: limit_torque: " << std::dec << cont->get_limit_torque() << std::endl;
std::cout << "[INFO]: max_pwm: " << std::dec << cont->get_max_pwm() << std::endl;
std::cout << "[INFO]: pwm_limit: " << std::dec << cont->get_pwm_limit() << std::endl;
std::cout << "[INFO]: Punch: " << std::dec << cont->get_punch() << std::endl;
cont->turn_led_on();
sleep(1);
cont->turn_led_off();
//*/
*/
double desired_speed = 100.0; //chosen speed when moving angle
......@@ -94,13 +94,13 @@ int main(int argc, char *argv[])
int t;
double uperiod = time_interval*1000000.0;
double timeout = max_time_sec/(uperiod/1000000.0);
/////////////////////////////////////////////////////////////////////////
/////MOVE RELATIVE ANGLE
/////////////////////////////////////////////////////////////////////////
/*
/*
std::cout << "-----------------------------------------------------------" << std::endl;
double relative_angle = -45;
double current_rel_angle;
......@@ -130,12 +130,12 @@ int main(int argc, char *argv[])
std::cout << "Error angle: " << current_rel_angle-desired_angle << std::endl;
std::cout << "Done" << std::endl;
sleep(1);
//*/
*/
/////////////////////////////////////////////////////////////////////////
////MOVE ABSOLUTE ANGLE
/////////////////////////////////////////////////////////////////////////
/*
/*
std::cout << "-----------------------------------------------------------" << std::endl;
double absolute_angle=0.0;
double current_abs_angle;
......@@ -165,12 +165,11 @@ int main(int argc, char *argv[])
std::cout << "Error angle: " << current_abs_angle-desired_angle << std::endl;
std::cout << "Done" << std::endl;
sleep(1);
//*/
*/
/////////////////////////////////////////////////////////////////////////
////MOVE TORQUE
/////////////////////////////////////////////////////////////////////////
/*
/*
std::cout << "-----------------------------------------------------------" << std::endl;
double max_effort;
if(argc==2)
......@@ -215,13 +214,14 @@ int main(int argc, char *argv[])
std::cout << "Done" << std::endl;
std::cout << "-----------------------------------------------------------" << std::endl;
sleep(1);
//*/
*/
/////////////////////////////////////////////////////////////////////////
////MOVE RANDOM TORQUES AND OUTPUT SPEEDS
/////////////////////////////////////////////////////////////////////////
///*
std::cout << "MOVE RANDOM EFFORTS" << std::endl;
int min=-100;
int max=100;
......@@ -250,7 +250,6 @@ int main(int argc, char *argv[])
std::cout << "Done" << std::endl;
std::cout << "-----------------------------------------------------------" << std::endl;
sleep(1);
//*/
......
......@@ -36,7 +36,7 @@ copyright : not copyrighted - public domain
</xsd:element>
<xsd:element name="min_voltage" type="xsd:float">
</xsd:element>
<xsd:element name="max_torque" type="xsd:float">
<xsd:element name="max_pwm" type="xsd:float">
</xsd:element>
<xsd:element name="cw_comp_margin" type="xsd:unsignedByte">
</xsd:element>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment