Volver a LinkerBot O6 Path

Software y SDK

Instalar y configurar el SDK LinkerBot O6, el controlador ROS2 y la integración LeRobot. Control conjunto en Python. límites de espacio de trabajo y gestión del par. ~ 2 horas.

Unidad 2 de 5 · Software y SDK · ~ 2 horas

Configure la pila completa de software: LinkerBot SDK, controlador ROS2, integración LeRobot y control de posición conjunta en Python. ejecuta una trayectoria scripted multi-joint antes de pasar a la teleoperación.

Paso 1: Python SDK y entorno virtual

# Create a dedicated venv for the O6
python3 -m venv ~/o6-env
source ~/o6-env/bin/activate

# Install the LinkerBot SDK and data dependencies
pip install roboticscenter lerobot numpy torch torchvision

# Verify the import works
python3 -c "from roboticscenter.o6 import O6Robot; print('SDK OK')"

Paso 2: Configuración del controlador ROS2

El paquete LinkerBot ROS2 expone el O6 como una interfaz de hardware estándar T6. Esto le permite usar cualquier planificador compatible con ROS2, MoveIt2, o sus propios controladores.

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/roboticscenter/linkerbot_ros2.git

cd ~/ros2_ws
source /opt/ros/humble/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Lanzar el controlador con el brazo conectado:

ros2 launch linkerbot_bringup o6_bringup.launch.py \
  can_interface:=can0

En una segunda terminal, confirme que los temas conjuntos de Estado publican:

source ~/ros2_ws/install/setup.bash
ros2 topic echo /joint_states --once

Paso 3: Referencia de los límites comunes

Joint Min (rad) Max (rad) Max Vel (rad/s)
Joint 1 (base rotation) -3.14 +3.14 1.5
Joint 2 (shoulder) -2.09 +2.09 1.5
Joint 3 (elbow) -2.62 +2.62 1.5
Joint 4 (forearm roll) -3.14 +3.14 2.0
Joint 5 (wrist pitch) -1.57 +1.57 2.0
Joint 6 (wrist roll) -3.14 +3.14 2.0

Paso 4: ejecuta una trayectoria escrita

Esto verifica que las 6 juntas responden a los comandos de posición. Mantenga T7 bajo en la primera carrera.

from roboticscenter.o6 import O6Robot
import time

robot = O6Robot(can_interface="can0")
robot.connect()
robot.enable_torque()

# Move to a pre-reach position
print("Moving to pre-reach...")
robot.move_joints(
    positions=[0.0, -0.5, 1.0, 0.0, 0.5, 0.0],  # radians
    speed_fraction=0.2
)
time.sleep(3)

# Reach forward (extend joint 2 and 3)
print("Reaching forward...")
robot.move_joints(
    positions=[0.0, -1.0, 1.5, 0.0, 0.5, 0.0],
    speed_fraction=0.2
)
time.sleep(3)

# Return to home
print("Returning to home...")
robot.move_to_home(speed_fraction=0.2)
time.sleep(3)

robot.disable_torque()
robot.disconnect()
print("Trajectory complete")

Mantenga las manos alejadas del espacio de trabajo del brazo durante el movimiento con guión.

Paso 5: Integración de SDK de LeRobot

Confirme que LeRobot puede comunicarse con el O6 utilizando la configuración del robot proporcionada:

python3 -c "
from lerobot.common.robot_devices.robots.factory import make_robot
robot = make_robot('linker_bot_o6')
robot.connect()
obs = robot.capture_observation()
print('Observation keys:', list(obs.keys()))
robot.disconnect()
"

Si se configura una cámara, debe ver teclas como T9 (posiciones y velocidades conjuntas) y T10. Si ve una T11, verifique la interfaz CAN y que el brazo esté en funcionamiento y respondiendo.

Unidad 2 completa cuando...

El controlador ROS2 se está lanzando sin errores y T12 está publicando. La trayectoria guionada corre todas las 6 juntas a través de dos puntos de paso y regresa a casa. T13 de LeRobot devuelve un dictado de observación válido. Usted entiende la tabla de límites conjuntos y no está comandando posiciones fuera de esos rangos.

[← Volver a la visión general del camino]