Bipod setup
What does dmesg say after emc exits?
You can make dmesg and the terminal more verbose by editing the debug level number in rtapi.conf
Please Log in or Create an account to join the conversation.
then, i've tried to invert the output of my joint1, that's because the second motor is going CCW to have positive joint lenght.
so i don't use negative homing and numbers for the two joints.
in fact if i set the two joints manually at a possible value (distance between the two motors is 800mm, so 600 per joint is a possible value), i can now go to world mode, but as soon as i try to jog in world mode it return a follow error. just two times happened that it moved along the x-world axis,but without stopping, right to the limit and then stop. only in that direction, but just two times on 50 tryings.
???
other thing:
in the kinematics functions of the wiki of this bipod there's another lack. when one of the cables reaches the verticality, it shuold stop.
also it should stop but without stopping the machine, so i can move back the axis, or the joints..there will be the need of a good and little complicate algorithm....
Please Log in or Create an account to join the conversation.
Try increasing it by one.ok, that's what i was looking about, but help me, what number should i write in debug mode?
What does dmesg say at the moment?
I really am not clear if EMC is crashing out, or if you are just getting following errors.
In joint mode the joints jog independently, and kinematics is ignored.in fact if i set the two joints manually at a possible value (distance between the two motors is 800mm, so 600 per joint is a possible value), i can now go to world mode, but as soon as i try to jog in world mode it return a follow error. just two times happened that it moved along the x-world axis,but without stopping, right to the limit and then stop. only in that direction, but just two times on 50 tryings.:
In world mode you jog in artesian space, so following errors here indicate that the axis positions do not match the commanded positions.
Set up a bunch of halmeters, and look at the axis, joint and motor command and feedback positions.
The possibilities are that your forwards and inverse kinematics are not actually inverses of each other (have you proved that yet, with manual calculations?) or that the feedback loop in your HAL file is set up wrong.
Please Log in or Create an account to join the conversation.
then you said to change the debug mode in rtapi.conf, but where is this file? i have one into the source code, but should i compile the entire EMC2 after?
or is it ok to change debug level into the .ini file?
i've found these levels:
/* Note: these may be hard-code referenced by the GUI (e.g., emcdebug.tcl).
If you change the assignments here, make sure and reflect that in
the GUI scripts that use these. Unfortunately there's no easy way to
get these into Tk automatically */
extern int EMC_DEBUG;
#define EMC_DEBUG_CONFIG 0x00000002
#define EMC_DEBUG_VERSIONS 0x00000008
#define EMC_DEBUG_TASK_ISSUE 0x00000010
#define EMC_DEBUG_NML 0x00000040
#define EMC_DEBUG_MOTION_TIME 0x00000080
#define EMC_DEBUG_INTERP 0x00000100
#define EMC_DEBUG_RCS 0x00000200
#define EMC_DEBUG_INTERP_LIST 0x00000800
#define EMC_DEBUG_ALL 0x7FFFFFFF /* it's an int for %i to work
*/
last question (thank you to giving these helps!):
what is the feedback loop in the HAL file?
thanks again. i'm going to turn on the EMC2 pc..
Please Log in or Create an account to join the conversation.
[ 1332.733810] I-pipe: Domain RTAI registered.
[ 1332.733819] RTAI[hal]: <3.6.1> mounted over IPIPE-NOTHREADS 2.0-04.
[ 1332.733821] RTAI[hal]: compiled with gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu3).
[ 1332.733827] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 1332.733829] PIPELINE layers:
[ 1332.733831] f8b78000 9ac15d93 RTAI 200
[ 1332.733833] c0383180 0 Linux 100
[ 1332.746535] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 1332.746895] RTAI[sched]: loaded (IMMEDIATE, UP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 1332.746900] RTAI[sched]: hard timer type/freq = 8254-PIT/1193180(Hz); default timing: periodic; linear timed lists.
[ 1332.746903] RTAI[sched]: Linux timer freq = 250 (Hz), CPU freq = 3000199000 hz.
[ 1332.746906] RTAI[sched]: timer setup = 2010 ns, resched latency = 2688 ns.
[ 1332.825666] RTAI[math]: loaded.
[ 1332.912923] config string '0x378 out '
[ 1355.817361] 22873: ERROR: joint 1 following error
[ 1365.983847] RTAI[math]: unloaded.
[ 1366.043787] SCHED releases registered named ALIEN RTGLBH
[ 1366.060382] RTAI[malloc]: unloaded.
[ 1366.159720] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[ 1366.162279] I-pipe: Domain RTAI unregistered.
[ 1366.162286] RTAI[hal]: unmounted.
dab-cnc@dab-cnc-desktop:~$
Please Log in or Create an account to join the conversation.
dab-cnc@dab-cnc-desktop:~$ emc /home/dab-cnc/emc2/configs/Prova_Bipod/Prova_Bipod.ini
EMC2 - 2.4.3
Machine configuration directory is '/home/dab-cnc/emc2/configs/Prova_Bipod'
Machine configuration file is 'Prova_Bipod.ini'
Starting EMC2...
(time=1281489154.398608,pid=16847): Registering server on TCP port 5005.
(time=1281489154.398746,pid=16847): running server for TCP port 5005 (connection_socket = 3).
iocontrol: machine: 'Prova_Bipod' version 'unknown'
task: machine: 'Prova_Bipod' version 'unknown'
NML_INTERP_LIST::append(nml_msg{size=24,type=EMC_TRAJ_SET_TERM_COND}) : list_size=1, line_number=0
NML_INTERP_LIST::append(nml_msg{size=84,type=EMC_TRAJ_SET_ORIGIN}) : list_size=2, line_number=0
NML_INTERP_LIST::append(nml_msg{size=20,type=EMC_TRAJ_SET_ROTATION}) : list_size=3, line_number=0
emcTaskPlanInit() returned 0
NML_INTERP_LIST::append(nml_msg_ptr{size=12,type=EMC_TASK_PLAN_SYNCH}) : list_size=1, line_number=0
emcTaskPlanSynch() returned 0
NML_INTERP_LIST::append(nml_msg{size=24,type=EMC_TRAJ_SET_TERM_COND}) : list_size=2, line_number=0
NML_INTERP_LIST::append(nml_msg{size=84,type=EMC_TRAJ_SET_ORIGIN}) : list_size=3, line_number=0
NML_INTERP_LIST::append(nml_msg{size=20,type=EMC_TRAJ_SET_ROTATION}) : list_size=4, line_number=0
emcTaskPlanInit() returned 0
Issuing EMC_TASK_PLAN_SYNCH -- (+516,+12, +0,)
emcTaskPlanSynch() returned 0
Issuing EMC_TRAJ_SET_TERM_COND -- (+222,+24, +0, +2,0.000000,)
Issuing EMC_TRAJ_SET_ORIGIN -- (+224,+84, +0,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,)
Issuing EMC_TRAJ_SET_ROTATION -- (+226,+20, +0,0.000000,)
Issuing EMC_TASK_PLAN_SET_BLOCK_DELETE -- (+518,+16, +1,\001,)
Issuing EMC_TASK_PLAN_SET_OPTIONAL_STOP -- (+517,+16, +2,\001,)
Issuing EMC_TASK_SET_MODE -- (+504,+16, +3, +3,)
NML_INTERP_LIST::append(nml_msg_ptr{size=12,type=EMC_TASK_PLAN_SYNCH}) : list_size=1, line_number=0
emcTaskPlanSynch() returned 0
Issuing EMC_TASK_PLAN_SYNCH -- (+516,+12, +0,)
emcTaskPlanSynch() returned 0
Issuing EMC_TASK_SET_MODE -- (+504,+16, +4, +2,)
NML_INTERP_LIST::append(nml_msg_ptr{size=12,type=EMC_TASK_PLAN_SYNCH}) : list_size=1, line_number=0
emcTaskPlanSynch() returned 0
Issuing EMC_TASK_PLAN_SYNCH -- (+516,+12, +0,)
emcTaskPlanSynch() returned 0
Issuing EMC_TASK_PLAN_OPEN -- (+506,+268, +5,/usr/share/axis/images/axis.ngc,)
emcTaskPlanOpen(/usr/share/axis/images/axis.ngc) returned 0
*********************************WARN_ONCE*********************************
File r300_render.c function r300Fallback line 470
Software fallback:ctx->Line.StippleFlag
***************************************************************************
Issuing EMC_TRAJ_SET_MAX_VELOCITY -- (+207,+20, +6,500.000000,)
Issuing EMC_TRAJ_SET_SPINDLE_SCALE -- (+233,+20, +7,0.000000,)
Issuing EMC_TRAJ_SET_SCALE -- (+209,+20, +8,0.000000,)
Issuing EMC_TRAJ_SET_TELEOP_ENABLE -- (+230,+16, +9, +0,)
Issuing EMC_TRAJ_SET_SCALE -- (+209,+20, +10,1.000000,)
Issuing EMC_TRAJ_SET_SPINDLE_SCALE -- (+233,+20, +11,1.000000,)
Issuing EMC_TRAJ_SET_SCALE -- (+209,+20, +12,1.000000,)
Issuing EMC_TRAJ_SET_SPINDLE_SCALE -- (+233,+20, +13,1.000000,)
Issuing EMC_TASK_SET_STATE -- (+505,+16, +14, +2,)
NML_INTERP_LIST::append(nml_msg_ptr{size=12,type=EMC_TASK_PLAN_SYNCH}) : list_size=1, line_number=0
emcTaskPlanClose() called at emc/task/emctask.cc:141
emcTaskPlanSynch() returned 0
Issuing EMC_TASK_PLAN_SYNCH -- (+516,+12, +0,)
emcTaskPlanSynch() returned 0
Issuing EMC_TASK_SET_STATE -- (+505,+16, +15, +4,)
Issuing EMC_TRAJ_SET_TELEOP_ENABLE -- (+230,+16, +16, +0,)
Issuing EMC_AXIS_HOME -- (+123,+16, +17, +0,)
Issuing EMC_AXIS_HOME -- (+123,+16, +18, +1,)
Issuing EMC_AXIS_HOME -- (+123,+16, +19, +2,)
Issuing EMC_AXIS_JOG -- (+124,+24, +20, +1,154.566667,)
Issuing EMC_AXIS_ABORT -- (+120,+16, +21, +1,)
Issuing EMC_AXIS_JOG -- (+124,+24, +22, +1,154.566667,)
Issuing EMC_AXIS_ABORT -- (+120,+16, +23, +1,)
Issuing EMC_AXIS_JOG -- (+124,+24, +24, +1,154.566667,)
Issuing EMC_AXIS_ABORT -- (+120,+16, +25, +1,)
Issuing EMC_AXIS_JOG -- (+124,+24, +26, +0,154.566667,)
Issuing EMC_AXIS_ABORT -- (+120,+16, +27, +0,)
Issuing EMC_TRAJ_SET_TELEOP_ENABLE -- (+230,+16, +28, +1,)
[b]
Issuing EMC_TRAJ_SET_TELEOP_VECTOR -- (+231,+84, +29,154.566667,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,)
joint 0 following error
emc/task/taskintf.cc 611: Error on axis 0, command number 120
[/b]
NML_INTERP_LIST::append(nml_msg_ptr{size=12,type=EMC_TASK_PLAN_SYNCH}) : list_size=1, line_number=0
NML_INTERP_LIST::append(nml_msg_ptr{size=12,type=EMC_TASK_PLAN_SYNCH}) : list_size=1, line_number=0
NML_INTERP_LIST::append(nml_msg_ptr{size=12,type=EMC_TASK_PLAN_SYNCH}) : list_size=1, line_number=0
Issuing EMC_TASK_PLAN_SYNCH -- (+516,+12, +0,)
emcTaskPlanSynch() returned 0
Shutting down and cleaning up EMC2...
(time=1281489287.359523,pid=16847): Deleting 5 channels from the NML_Main_Channel_List.
(time=1281489287.359556,pid=16847): Deleting emcCommand NML channel from NML_Main_Channel_List.
(time=1281489287.359566,pid=16847): deleting NML (1)
(time=1281489287.359575,pid=16847): delete (CMS *) 80521E8;
(time=1281489287.359591,pid=16847): rcs_shm_close(shm->key=1001(0x3E9),shm->size=8192(0x2000),shm->addr=0xB7DB6000)
(time=1281489287.359624,pid=16847): deleting CMS (emcCommand)
(time=1281489287.359636,pid=16847): free( data = 8052B00);
(time=1281489287.359646,pid=16847): Leaving ~CMS()
(time=1281489287.359655,pid=16847): CMS::delete(80521E8)
(time=1281489287.359663,pid=16847): CMS::delete successful.
(time=1281489287.359671,pid=16847): Leaving ~NML()
(time=1281489287.359680,pid=16847): NML channel deleted from NML_Main_Channel_List
(time=1281489287.359687,pid=16847): Deleting emcStatus NML channel from NML_Main_Channel_List.
(time=1281489287.359695,pid=16847): deleting NML (2)
(time=1281489287.359728,pid=16847): delete (CMS *) 8057AB8;
(time=1281489287.359737,pid=16847): rcs_shm_close(shm->key=1002(0x3EA),shm->size=16384(0x4000),shm->addr=0xB7DB2000)
(time=1281489287.359753,pid=16847): deleting CMS (emcStatus)
(time=1281489287.359763,pid=16847): free( data = 80583D0);
(time=1281489287.359772,pid=16847): Leaving ~CMS()
(time=1281489287.359780,pid=16847): CMS::delete(8057AB8)
(time=1281489287.359787,pid=16847): CMS::delete successful.
(time=1281489287.359794,pid=16847): Leaving ~NML()
(time=1281489287.359810,pid=16847): NML channel deleted from NML_Main_Channel_List
(time=1281489287.359819,pid=16847): Deleting emcError NML channel from NML_Main_Channel_List.
(time=1281489287.359825,pid=16847): deleting NML (3)
(time=1281489287.359832,pid=16847): delete (CMS *) 805C8D0;
(time=1281489287.359839,pid=16847): rcs_shm_close(shm->key=1003(0x3EB),shm->size=8192(0x2000),shm->addr=0xB7DB0000)
(time=1281489287.359855,pid=16847): deleting CMS (emcError)
(time=1281489287.359865,pid=16847): free( data = 805D1E8);
(time=1281489287.359874,pid=16847): Leaving ~CMS()
(time=1281489287.359882,pid=16847): CMS::delete(805C8D0)
(time=1281489287.359889,pid=16847): CMS::delete successful.
(time=1281489287.359896,pid=16847): Leaving ~NML()
(time=1281489287.359913,pid=16847): NML channel deleted from NML_Main_Channel_List
(time=1281489287.359920,pid=16847): Deleting toolCmd NML channel from NML_Main_Channel_List.
(time=1281489287.359927,pid=16847): deleting NML (4)
(time=1281489287.359933,pid=16847): delete (CMS *) 805F638;
(time=1281489287.359941,pid=16847): rcs_shm_close(shm->key=1004(0x3EC),shm->size=1024(0x400),shm->addr=0xB7DAF000)
(time=1281489287.359956,pid=16847): deleting CMS (toolCmd)
(time=1281489287.359966,pid=16847): free( data = 805FF50);
(time=1281489287.359975,pid=16847): Leaving ~CMS()
(time=1281489287.359983,pid=16847): CMS::delete(805F638)
(time=1281489287.359990,pid=16847): CMS::delete successful.
(time=1281489287.359997,pid=16847): Leaving ~NML()
(time=1281489287.360027,pid=16847): NML channel deleted from NML_Main_Channel_List
(time=1281489287.360034,pid=16847): Deleting toolSts NML channel from NML_Main_Channel_List.
(time=1281489287.360041,pid=16847): deleting NML (5)
(time=1281489287.360048,pid=16847): delete (CMS *) 80607D0;
(time=1281489287.360056,pid=16847): rcs_shm_close(shm->key=1005(0x3ED),shm->size=8192(0x2000),shm->addr=0xB7DAD000)
(time=1281489287.360071,pid=16847): deleting CMS (toolSts)
(time=1281489287.360080,pid=16847): free( data = 80610E8);
(time=1281489287.360089,pid=16847): Leaving ~CMS()
(time=1281489287.360105,pid=16847): CMS::delete(80607D0)
(time=1281489287.360114,pid=16847): CMS::delete successful.
(time=1281489287.360122,pid=16847): Leaving ~NML()
(time=1281489287.360130,pid=16847): NML channel deleted from NML_Main_Channel_List
(time=1281489287.360140,pid=16847): deleting NML (1)
(time=1281489287.360149,pid=16847): Leaving ~NML()
(time=1281489287.360157,pid=16847): NML::operater delete(8052008)
(time=1281489287.360167,pid=16847): NML channel deleted from Dynamically_Allocated_NML_Objects
(time=1281489287.360272,pid=16847): deleting NML (2)
(time=1281489287.360283,pid=16847): Leaving ~NML()
(time=1281489287.360289,pid=16847): NML::operater delete(8057938)
(time=1281489287.360307,pid=16847): NML channel deleted from Dynamically_Allocated_NML_Objects
(time=1281489287.360316,pid=16847): deleting NML (3)
(time=1281489287.360324,pid=16847): Leaving ~NML()
(time=1281489287.360330,pid=16847): NML::operater delete(805C6D0)
(time=1281489287.360337,pid=16847): NML channel deleted from Dynamically_Allocated_NML_Objects
(time=1281489287.360346,pid=16847): deleting NML (4)
(time=1281489287.360353,pid=16847): Leaving ~NML()
(time=1281489287.360359,pid=16847): NML::operater delete(805F4B8)
(time=1281489287.360366,pid=16847): NML channel deleted from Dynamically_Allocated_NML_Objects
(time=1281489287.360375,pid=16847): deleting NML (5)
(time=1281489287.360383,pid=16847): Leaving ~NML()
(time=1281489287.360390,pid=16847): NML::operater delete(8060650)
(time=1281489287.360405,pid=16847): NML channel deleted from Dynamically_Allocated_NML_Objects
Cleanup done
understand something?
thanks!
Please Log in or Create an account to join the conversation.
i tryed to write down the kins formulas into the datasheet, and the results are perfectly the same.
HELP!
Please Log in or Create an account to join the conversation.
There should be some lines similar to (this is from memory, don't copy this)what is the feedback loop in the HAL file?.
net signame1 axis.0.motor-pos-cmd => stepgen.0.posn
net pos-feedback stepgen.0.posn-fb => axis.0.motor-pos-fb
This checks that the difference between what the controller is asking of the system, and what the stepgen can actually achieve is within the following error limits.
The first thing to check is why you are getting a following error, is it actually true?
What is your following error limit? Is the feedback loop in place? What do you see if you watch the posn-cmd, posn-fb and f-error pins for the axes in halscope?
Please Log in or Create an account to join the conversation.
loadrt dab_bipodkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
net spindle-cmd <= motion.spindle-speed-out
net xdir => parport.0.pin-01-out
net zstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
net xenable => parport.0.pin-04-out
net zenable => parport.0.pin-05-out
net zdir => parport.0.pin-06-out
net ydir => parport.0.pin-07-out
setp parport.0.pin-07-out-invert 1
net adir => parport.0.pin-08-out
net astep => parport.0.pin-09-out
setp parport.0.pin-09-out-reset 1
net ystep => parport.0.pin-14-out
setp parport.0.pin-14-out-reset 1
net xstep => parport.0.pin-16-out
setp parport.0.pin-16-out-reset 1
net yenable => parport.0.pin-17-out
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 35000
setp stepgen.0.dirsetup 35000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 35000
setp stepgen.1.dirsetup 35000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 35000
setp stepgen.2.dirsetup 35000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
i have the feedback lines for every axis. the file was done by stepconf wizard. i just added the yenable and zenable needed by my driver.
Please Log in or Create an account to join the conversation.
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
i have the feedback lines for every axis. the file was done by stepconf wizard. i just added the yenable and zenable needed by my driver.
What are the servo period and base period (in the INI file)? In fact, can you post the INI file?
What actually happens? I am not clear from the dmesg stuff you have posted if you get a following error and EMC2 stops and unloads itself, or whether you get a following error and then you are quitting EMC2.
What does Halscope show you for the pos-cmd, pos-fb and f-error pins?
Please Log in or Create an account to join the conversation.