Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions experimentalSetups/neckmk3_2joints/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
2 Joints Neck Setup
===================

This setup is a prototype of the neck that will be mounted on `iCub` and `ergoCub`.
It consists of two motors and can be actuated using `yarprobotinterface` and `yarpmotorgui`.
One motor is controlled by an `amc` board and the other by an `amcbldc` board.
All the parameters to move the setup are in the configuration files.

### Picture of the setup

| |
| :---: |
| ![](assets/neck_setup.jpg) |
| **Figure 1** Setup view |

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
47 changes: 47 additions & 0 deletions experimentalSetups/neckmk3_2joints/calibrators/neck-calib.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE devices PUBLIC "-//YARP//DTD yarprobotinterface 3.0//EN" "http://www.yarp.it/DTD/yarprobotinterfaceV3.0.dtd">

<device xmlns:xi="http://www.w3.org/2001/XInclude" name="neck-calibrator" type="parametricCalibratorEth">

<xi:include href="../general.xml" />

<group name="GENERAL">
<param name="joints"> 2 </param> <!-- the number of joints of the robot part -->
<param name="deviceName"> Neckmk3_Calibrator </param>
</group>

<group name="HOME">
<param name="positionHome"> 0 0 </param>
<param name="velocityHome"> 10 10 </param>
</group>

<group name="CALIBRATION">
<param name="calibrationType"> 12 12 </param>

<param name="calibration1"> 36439 48191 </param>
<param name="calibration2"> 0 0 </param>
<param name="calibration3"> 0 0 </param>
<param name="calibration4"> 0 0 </param>
<param name="calibration5"> 0 0 </param>
<param name="calibrationZero"> 0 0 </param>
<param name="calibrationDelta"> 0 0 </param>

<param name="startupPosition"> 0.0 0.0 </param>
<param name="startupVelocity"> 10.0 10.0 </param>
<param name="startupMaxPwm"> 16000 16000 </param>
<param name="startupPosThreshold"> 2 2 </param>
</group>

<param name="CALIB_ORDER"> (0) (1) </param>

<action phase="startup" level="10" type="calibrate">
<param name="target"> neck-mc_remapper </param>
</action>

<action phase="interrupt1" level="1" type="park">
<param name="target"> neck-mc_remapper </param>
</action>

<action phase="interrupt3" level="1" type="abort" />

</device>
2 changes: 2 additions & 0 deletions experimentalSetups/neckmk3_2joints/firmwareupdater.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[DRIVERS]
ETH "eth"
11 changes: 11 additions & 0 deletions experimentalSetups/neckmk3_2joints/general.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE params PUBLIC "-//YARP//DTD yarprobotinterface 3.0//EN" "http://www.yarp.it/DTD/yarprobotinterfaceV3.0.dtd">

<params xmlns:xi="http://www.w3.org/2001/XInclude" robot="neckmk3" build="1">

<group name="GENERAL">
<param name="skipCalibration"> false </param>
<param name="useRawEncoderData"> false </param>
<param name="verbose"> false </param>
</group>
</params>
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE params PUBLIC "-//YARP//DTD yarprobotinterface 3.0//EN" "http://www.yarp.it/DTD/yarprobotinterfaceV3.0.dtd">

<params xmlns:xi="http://www.w3.org/2001/XInclude" robot="new_neck" build="1">

<xi:include href="./pc104.xml" />

<group name="ETH_BOARD">

<group name="ETH_BOARD_PROPERTIES">
<param name="IpAddress"> 10.0.1.1 </param>
<param name="IpPort"> 12345 </param>
<param name="Type"> amc </param>
<param name="maxSizeRXpacket"> 768 </param>
<param name="maxSizeROP"> 384 </param>
</group>

<group name="ETH_BOARD_SETTINGS">
<param name="Name"> "neck-eb2-j0_2" </param>
<group name="RUNNINGMODE">
<param name="period"> 1000 </param>
<param name="maxTimeOfRXactivity"> 400 </param>
<param name="maxTimeOfDOactivity"> 300 </param>
<param name="maxTimeOfTXactivity"> 300 </param>
<param name="TXrateOfRegularROPs"> 2 </param>
</group>
</group>

<group name="ETH_BOARD_ACTIONS">
<group name="MONITOR_ITS_PRESENCE">
<param name="enabled"> true </param>
<param name="timeout"> 0.020 </param>
<param name="periodOfMissingReport"> 60.0 </param>
</group>
</group>

</group>

</params>

14 changes: 14 additions & 0 deletions experimentalSetups/neckmk3_2joints/hardware/electronics/pc104.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE params PUBLIC "-//YARP//DTD yarprobotinterface 3.0//EN" "http://www.yarp.it/DTD/yarprobotinterfaceV3.0.dtd">

<params xmlns:xi="http://www.w3.org/2001/XInclude" robot="new_neck" build="1">

<group name="PC104">
<param name="PC104IpAddress"> 10.0.1.104 </param>
<param name="PC104IpPort"> 12345 </param>
<param name="PC104TXrate"> 1 </param>
<param name="PC104RXrate"> 5 </param>
</group>

</params>

Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE params PUBLIC "-//YARP//DTD yarprobotinterface 3.0//EN" "http://www.yarp.it/DTD/yarprobotinterfaceV3.0.dtd">

<params xmlns:xi="http://www.w3.org/2001/XInclude" robot="new_neck" build="1">
<group name="GENERAL">
<param name="MotioncontrolVersion"> 6 </param>
<param name="Joints"> 2 </param>
<param name="AxisMap"> 0 1 </param>
<param name="AxisName"> "neck_pitch" "neck_roll" </param>
<param name="AxisType"> "revolute" "revolute" </param>
<param name="Encoder"> 182.044 182.044 </param>
<param name="fullscalePWM"> 32000 32000 </param>
<param name="ampsToSensor"> 1000.0 1000.0 </param>
<param name="Gearbox_M2J"> +100 +100 </param>
<param name="Gearbox_E2J"> 1 1 </param>
<param name="useMotorSpeedFbk"> 0 0 </param>
<param name="MotorType"> "FAULHABER" "FAULHABER" </param>
<param name="Verbose"> 0 0 </param>
</group>

<group name="LIMITS">
<param name="hardwareJntPosMax"> +22 +20 </param>
<param name="hardwareJntPosMin"> -30 -20 </param>
<param name="rotorPosMin"> 0 0 </param>
<param name="rotorPosMax"> 0 0 </param>
</group>

<group name="AMCBLDC">
<param name="HasHallSensor"> 1 1 </param>
<param name="TemperatureSensorType"> NONE NONE </param>
<param name="HasRotorEncoder"> 0 0 </param>
<param name="HasRotorEncoderIndex"> 0 0 </param>
<param name="HasSpeedEncoder"> 0 0 </param>
<param name="RotorIndexOffset"> 0 0 </param>
<param name="MotorPoles"> 14 14 </param>
</group>

<group name="ADVFOC">
<param name="Verbose"> 0 0 </param>
<param name="AutoCalibration"> 0 0 </param>
<param name="HasHallSensor"> 1 1 </param>
<param name="TemperatureSensorType"> NONE NONE </param>
<param name="HasRotorEncoder"> 0 0 </param>
<param name="HasRotorEncoderIndex"> 0 0 </param>
<param name="HasSpeedEncoder"> 0 0 </param>
<param name="RotorIndexOffset"> 0 0 </param>
<param name="MotorPoles"> 14 14 </param>
</group>


<group name="COUPLINGS">

<param name ="matrixJ2M">
1.0 0.0 0.0 0.0
0.0 1.0 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0
</param>

<param name ="matrixM2J">
1.0 0.0 0.0 0.0
0.0 1.0 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0
</param>

<param name ="matrixE2J">
1.00 0.00 0.00 0.00 0.00 0.00
0.00 1.00 0.00 0.00 0.00 0.00
0.00 0.00 1.00 0.00 0.00 0.00
0.00 0.00 0.00 1.00 0.00 0.00
</param>

</group>

<group name="JOINTSET_CFG">
<param name= "numberofsets"> 2 </param>
<group name="JOINTSET_0">
<param name="listofjoints"> 0 </param>
<param name="constraint"> none </param>
<param name="param1"> 0 </param>
<param name="param2"> 0 </param>
</group>
<group name="JOINTSET_1">
<param name="listofjoints"> 1 </param>
<param name="constraint"> none </param>
<param name="param1"> 0 </param>
<param name="param2"> 0 </param>
</group>
</group>

</params>

Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE devices PUBLIC "-//YARP//DTD yarprobotinterface 3.0//EN" "http://www.yarp.it/DTD/yarprobotinterfaceV3.0.dtd">


<device xmlns:xi="http://www.w3.org/2001/XInclude" name="neck-eb2-j0_1-mc" type="embObjMotionControl">

<xi:include href="../../general.xml" />
<xi:include href="../../hardware/electronics/neck-eb2-j0_1-eln.xml" />
<xi:include href="../../hardware/mechanicals/neck-eb2-j0_1-mec.xml" />
<xi:include href="./neck-eb2-j0_1-mc_service.xml" />

<!-- joint number 0 1 -->
<!-- joint name neck-pitch neck-roll -->
<group name="LIMITS">
<param name="jntPosMax"> +20 +18 </param> <!-- using mechanical limits -2 -->
<param name="jntPosMin"> -28 -18 </param>
<param name="jntVelMax"> 50 50 </param>
<param name="motorNominalCurrents"> 1000 1000 </param>
<param name="motorPeakCurrents"> 2000 2000 </param>
<param name="motorOverloadCurrents"> 2100 2100 </param>
<param name="motorPwmLimit"> 16000 16000 </param>
</group>

<group name="TIMEOUTS">
<param name="velocity"> 100 100 </param>
</group>

<group name="IMPEDANCE">
<param name="stiffness"> 0 0 </param>
<param name="damping"> 0 0 </param>
</group>

<group name="CONTROLS">
<param name="positionControl"> POS_PID_DEFAULT POS_PID_DEFAULT </param>
<param name="velocityControl"> POS_PID_DEFAULT POS_PID_DEFAULT </param>
<param name="mixedControl"> POS_PID_DEFAULT POS_PID_DEFAULT </param>
<param name="torqueControl"> none none </param>
<param name="currentPid"> 2FOC_CUR_CONTROL 2FOC_CUR_CONTROL </param>
<param name="speedPid"> 2FOC_VEL_CONTROL 2FOC_VEL_CONTROL </param>
</group>


<!-- default position PID: begin -->

<group name="POS_PID_DEFAULT">
<param name="controlLaw"> minjerk </param>
<param name="outputType"> current </param>
<param name="fbkControlUnits"> metric_units </param>
<param name="outputControlUnits"> machine_units </param>
<param name="kp"> +100 +100 </param>
<param name="kd"> +12 +12 </param>
<param name="ki"> +80 +80 </param>
<param name="maxOutput"> 500 500 </param>
<param name="maxInt"> 200 200 </param>
<param name="stictionUp"> 0 0 </param>
<param name="stictionDown"> 0 0 </param>
<param name="kff"> 0 0 </param>
</group>

<!-- default position PID: end -->


<!-- other default PIDs: begin -->

<group name="2FOC_CUR_CONTROL">
<param name="controlLaw"> low_lev_current </param>
<param name="fbkControlUnits"> machine_units </param>
<param name="outputControlUnits"> machine_units </param>
<param name="kp"> 0.03 0.03 </param>
<param name="kd"> 0 0 </param>
<param name="ki"> 82 82 </param>
<param name="shift"> 0 0 </param>
<param name="maxOutput"> 16000 16000 </param>
<param name="maxInt"> 32000 32000 </param>
<param name="kff"> 0 0 </param>
</group>

<group name="2FOC_VEL_CONTROL">
<param name="controlLaw"> low_lev_speed </param>
<param name="fbkControlUnits"> machine_units </param>
<param name="outputControlUnits"> machine_units </param>
<param name="kff"> 0 0 </param>
<param name="kp"> 12 12 </param>
<param name="kd"> 0 0 </param>
<param name="ki"> 16 16 </param>
<param name="shift"> 10 10 </param>
<param name="maxOutput"> 32000 32000 </param>
<param name="maxInt"> 32000 32000 </param>
</group>

<!-- other default PIDs: end -->


<!-- custom PIDs: begin -->

<!-- custom PIDs: end -->

<group name="OTHER_CONTROL_PARAMETERS">
<param name="deadZone"> 0.0495 0.0495 </param>
</group>

</device>
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE params PUBLIC "-//YARP//DTD yarprobotinterface 3.0//EN" "http://www.yarp.it/DTD/yarprobotinterfaceV3.0.dtd">

<params xmlns:xi="http://www.w3.org/2001/XInclude" robot="new_neck" build="1">

<group name="SERVICE">

<param name="type"> eomn_serv_MC_advfoc </param>

<group name="PROPERTIES">

<group name="ETHBOARD">
<param name="type"> amc </param>
</group>

<group name="CANBOARDS">
<param name="type"> amc2c amcbldc </param>
<group name="PROTOCOL">
<param name="major"> 2 2 </param>
<param name="minor"> 0 0 </param>
</group>
<group name="FIRMWARE">
<param name="major"> 3 2 </param>
<param name="minor"> 1 1 </param>
<param name="build"> 0 0 </param>
</group>
</group>

<group name="JOINTMAPPING">

<group name="ACTUATOR">
<param name="type"> advfoc advfoc </param>
<param name="onboard"> amc2c amcbldc </param>
<param name="port"> ICC1:3 CAN1:1 </param>
</group>

<group name="ENCODER1">
<param name="type"> aea3 aea3 </param>
<param name="port"> CONN:J5_X1 CONN:J5_X2 </param>
<param name="position"> atjoint atjoint </param>
<param name="resolution"> 16384 16384 </param>
<param name="tolerance"> 0.4 0.4 </param>
</group>

<group name="ENCODER2">
<param name="type"> none none </param>
<param name="port"> CAN1:1:0 CAN1:2:0 </param>
<param name="position"> atmotor atmotor </param>
<param name="resolution"> 0 0 </param>
<param name="tolerance"> 0 0 </param>
</group>

</group>

</group>

</group>

</params>
Loading