Workspace ROS 2 para visualizar e controlar um braço robótico definido em URDF/Xacro no RViz/Gazebo.
- Ubuntu com ROS 2 Humble instalado
makesudopara instalar dependências do sistema
O projeto usa ROS_DISTRO=humble por padrão. Para outra distribuição:
make install ROS_DISTRO=<sua_distro>
make build ROS_DISTRO=<sua_distro>
make run ROS_DISTRO=<sua_distro>Na raiz do repositório:
make installEsse comando instala as dependências usadas para gerar o URDF, publicar o estado do robô e abrir a visualização no RViz.
make buildDepois de compilar:
make runEsse comando abre Gazebo, RViz, a janela de sliders e a ponte RS485 para o robo real:
- Gazebo Classic
- RViz ja configurado com Grid, TF e modelo do robo
joint_state_publisher_gui- ponte RS485 com
dry_run:=false
Use a janela do joint_state_publisher_gui para mover as juntas do braço.
Para abrir RViz com a janela de sliders e enviar os mesmos movimentos ao robo real:
make rviz-realPara usar outra porta:
make rviz-real PORT=/dev/ttyUSB1Depois de compilar:
make gazeboEsse comando abre:
- Gazebo Classic
joint_state_publisher_gui- plugin Gazebo que aplica
/joint_statesdireto nas juntas do modelo - ponte
joint_states-> RS485 em modo teste (dry_run:=true)
Use esse modo para conferir o movimento no Gazebo sem escrever na serial.
Para mover o Gazebo e o robo real ao mesmo tempo:
make realO mesmo slider alimenta os dois caminhos:
- Gazebo:
/joint_states-> pluginjoint_state_gazebo_plugin - Robo real:
/joint_states->rs485_joint_bridge.py->/dev/ttyUSB1
Antes de abrir, make real fecha processos antigos deste projeto. Isso evita dois publicadores diferentes em /joint_states.
Para limpar manualmente:
make stopPara usar outra porta:
make real PORT=/dev/ttyUSB1Para ajustar a resposta da serial:
make real SEND_PERIOD=0.001Com o firmware em 9600, use SEND_PERIOD=0.03. Tentar 0.001 satura a serial e gera timeout de escrita.
make run BAUDRATE=9600 SEND_PERIOD=0.03O comando atual tambem e reenviado periodicamente. Isso ajuda quando o robo real nao esta sincronizado com a posicao que o ROS esta publicando.
make run RESEND_PERIOD=0.3Os sliders usam estas juntas:
| Slider ROS/Gazebo | Campo enviado |
|---|---|
base_joint |
b0 |
shoulder_joint |
b1 |
elbow_joint |
b2 |
gripper_joint |
g abre/fecha a garra |
Dimensoes modeladas:
| Parte | Medida |
|---|---|
| Base giratoria | 60 mm de altura, 95 mm de diametro |
| Suporte/motor acima da base | 50 mm de altura |
| Primeiro braco | 130 mm |
| Segundo braco | 210 mm |
| Garra | 100 mm |
Com todos os controles em 0, o comando enviado e a pose do modelo ficam zerados:
b0_0_b1_0_b2_0_g_0
Por seguranca, make gazebo nao escreve na serial. Ele mostra os comandos no terminal em dry_run.
make gazeboO equivalente manual de make real e:
source /opt/ros/humble/setup.bash
source install/setup.bash
ros2 launch arm_package_description gazebo_control.launch.py dry_run:=false port:=/dev/ttyUSB1make xacroSe o arquivo estiver correto, o comando imprime o URDF gerado no terminal.
make cleanPara limpar e compilar novamente:
make rebuildsrc/arm_package_description/
├── launch/ # arquivos de launch do ROS 2
├── urdf/ # descrição do robô em Xacro/URDF
├── meshes/ # malhas 3D
├── config/ # configurações auxiliares
├── scripts/ # pontes ROS 2 para Gazebo e RS485
└── src/ # código fonte do pacote, se necessário