Скрипт Hexapod Tcl Rotation - PullRequest
0 голосов
/ 15 июня 2019

Я новичок в TCL и борюсь с кодом, который я написал для выполнения синусоидального вращения (по оси Z) с шестигранником (робот 6 степеней свободы).Проблема в том, что мой шестигранник действительно выполняет вращение, то есть 0,03 градуса, но когда я хочу построить временной ряд вращательного движения, я вижу, что шестнадцатеричный не выполняет полную амплитуду.

set TimeOut 10 
set code 0 

OpenConnection $TimeOut socketID 
if {$socketID == -1} { 
    puts stdout "OpenConnection failed => $socketID" 
    return 
} 


# Main

set T0 5000; #Time delay
set pi [expr 2*asin(1.0)]; #Pi
set period 20; #period is 20 second
set delta 0.2; #Time interval
set amplitude 0.03; #Amplitude(degree)
set step [expr $period/$delta];

HexapodMoveAbsolute $socketID HEXAPOD Work 0 0 -12 0 0 $amplitude; # Position(mm,degree) 
after $T0

for {set i0 0} {$i0<4} {incr i0} {
    for {set i 0} {$i<$step} {incr i} {
        set displacement [expr $amplitude*cos(2*$pi*($i*$delta+$delta)/$period)-$amplitude*cos(2*$pi*$i*$delta/$period)]
        set velocity [expr $amplitude*abs($displacement/$delta)]
        HexapodMoveIncrementalControlWithTargetVelocity $socketID HEXAPOD Work Rotation 0 0 $displacement $velocity
    }
}


# Close TCP socket 
TCP_CloseSocket $socketID 

Я ожидаю выходной сигнал 0.03 градусов по амплитуде, но получаю [+0.03, -0.01] градусов.Буду признателен за любые предположения, почему я получаю этот вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...