Tengo problemas para controlar el servo motor dynamixel MX28R
.
He probado dos tipos de conexión. Primero uno a raspberry Pi B+
y este es un
caso de uso principal. Aquí está mi esquema de conexión.
ElservoseconectaaRS485communicationboard
.RSE
pinseconectaaGPIO_0
deframbuesa.RSE
necesitaserconfiguradoaceropararecibiryestableceren1paralatransmisióndedatos.HemodificadoelSDKdeC++yagregueencenderGPIO_0antesdeescribiryapagardespués.deDynamixelSDK/c++/src/dynamixel_sdk_linux/port_handler_linux.cpp
#defineRES_PIN0...PortHandlerLinux::PortHandlerLinux(constchar*port_name):socket_fd_(-1),baudrate_(DEFAULT_BAUDRATE_),packet_start_time_(0.0),packet_timeout_(0.0),tx_time_per_byte(0.0){is_using_=false;setPortName(port_name);wiringPiSetup();//<<<<thisismycodepinMode(RES_PIN,OUTPUT);//<<<<digitalWrite(RES_PIN,LOW);//<<<<}...intPortHandlerLinux::writePort(uint8_t*packet,intlength){digitalWrite(RES_PIN,HIGH);//<<<<//delay1don'tworkwithorwithoutdelaysintres=write(socket_fd_,packet,length);//delay2digitalWrite(RES_PIN,LOW);//<<<<returnres;}...
PerocuandoejecutoejemplosVeoThereisnostatuspacket!
error.Yelmotornoreacciona.Hetratadodeenviarcomandosatravésdedxl_monitor
.Porejemplo,paraencenderelLED:w11251
ow1255251
peronopasanada.Tambiénheintentadoenviarel
import serial
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(0, GPIO.OUT)
port = serial.Serial("/dev/ttyAMA0", baudrate=1000000, timeout=3.0)
while True:
GPIO.output(0, GPIO.HIGH)
port.write(bytearray.fromhex("FF FF 01 05 03 1E 32 03 A3"))
time.sleep(0.1)
GPIO.output(0, GPIO.LOW)
time.sleep(3)
GPIO.output(0,GPIO.HIGH)
port.write(bytearray.fromhex("FF FF 01 05 03 1E CD 00 0b"))
time.sleep(0.1)
GPIO.output(0,GPIO.LOW)
time.sleep(3)
También he intentado cambiar la velocidad en baudios a diferentes valores de este manual sin resultado.
Aquí hay otra conexión que he usado.
RSE
pin siempre se establece en 1 para transmitir datos desde la PC.
Envié paquetes de instrucciones en bruto con el mismo código de Python (sin GPIO
).
Pero el servo no reacciona.
También he notado que el led en UART
se enciende por un tiempo, cuando enciendo dynamixel.
Al igual que envía algunos datos sobre encendido. He intentado leer datos con utile de pantalla:
screen /dev/ttyUSB0 1000000 cs8
Probado con diferentes velocidades de transmisión, pero la pantalla no muestra información.