Skip to content

DESAFIO - Introdução ao Linux

Agora que conhecemos alguns comandos, podemos configurar o nosso .bashrc, para brincar com a tartaruga do ROS!

referencia

Configurando o ´.bashrc´

O .bashrc carrega todas as variáveis globais do seu ambiente Linux, esse arquivo é muito importante, e muito utilizado. Para acessar o bashrc, use o comando abaixo

code ~/.bashrc

Perceba que la no final do arquivo, temos algo como;

##########################
# 3s
##########################

source ~/elementos.sh
source ~/robotica.sh

Isso é porque estamos ativando esses arquivos que estão localizados na home, eles sobem configurações especificas para o ambiente, tanto da matéria de Robótica, como da matéria de Elementos de Sistemas, deixamos separado desta forma pra facilitar a manutenção e pra deixar mais organizado.

Para subir a tartaruga do ROS, precisamos configurar o nosso robotica.sh, primeiro, abra o arquivo robotica.sh, usando o comando abaixo;

code ~/robotica.sh

Depois, procure essas linhas, e comente, conforme imagem abaixo;

bashrc

Salve e feche o arquivo.

Inicializando o ROS

Abra um terminal novo, usando o atalho Crtl + T, neste terminal, execute o comando a seguir para criar uma "Rede ROS"

roscore

Seu resultado deve ser algo parecido com isso:

referencia

Subindo o TurtleSim

Em uma nova aba do terminal (Crtl + Shift + T), vamos chamar a tartaruga com o comando abaixo:

rosrun turtlesim turtlesim_node 

Seu resultado deve ser algo parecido com isso;

turtlesim_2

Listando os topicos disponíveis

Nós veremos com maior profundidade as funcionalidades do ROS durante o curso de Robótica Computacional, mas é legal saber, que podemos acessar os sensores dos nossos robôs, tanto dos virtuais como dos reais, com o comando abaixo;

rostopic list

turtlesim_2

Com o rostopic list temos acesso a todos os tópicos disponíveis, tanto para visualizar, como para publicar novos valores nos sensores, usaremos dois tópicos nesta atividade;

  • /turtle1/pose, para visualizar aonde nossa tartaruga está no mapa;

  • /turtle1/cmd_vel, para publicar novos valores de relocidade angular e velocidade linear em nossa tartaruga;

Acessando os Sensores da tartaruga

Digite o comando abaixo em uma nova aba do seu terminal Crtl + Shift + T), para acessar os sensores de velocidade e de posição da tartaruga

rostopic echo /turtle1/pose 

Depois, em um terminal novo (Crtl + T), digite o comando a seguir, use as setas do seu teclado para mover a tartaruga, e observe os valores de velocidade e de posição, alternarem no terminal aberto no passo anterior.

rosrun turtlesim turtle_teleop_key 

Seu resultado deve ser algo parecido com isso;

teleop

Com o comando abaixo, podemos publicar valores de velocidade angular e linear na nossa tartaruga, só tome cuidado pra não bater ela na parede, ela reclama!

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist '[4.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'

Durante a disciplina de Robótica, esses comandos serão vistos em maiores detalhes, mas é importante saber, que estamos enviando um vetor contendo

  • Velocidade Linear em X, Y, Z;
  • Velocidade Angular em X, Y, Z;

A tartaruga aceita valores do tipo Float, positivios e negativos, altere os valores publicados, perceba como ele altera o comportamento da tartaruga

cmd_vel

Vamos programar!

Abra o arquivo roda_tartaruga.py criado com muito carinho, na atividade anterior;

code roda_tartaruga.py

Cole o codigo abaixo dentro do seu arquivo:

#!/usr/bin/env python3

import rospy
from geometry_msgs.msg import Twist
import sys
ja_rodou=0

def move_turtle(lin_vel,ang_vel,sleep):
    rospy.init_node('move_turtle', anonymous=True)
    pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=3)

    vel = Twist()       

    vel.linear.x = lin_vel # Velocidade linear
    vel.linear.y = 0
    vel.linear.z = 0

    vel.angular.x = 0
    vel.angular.y = 0
    vel.angular.z = ang_vel  # Velocidade angular

    rospy.loginfo("Linear Vel = %f: Angular Vel = %f",lin_vel,ang_vel)

    pub.publish(vel)
    rospy.sleep(sleep)


if __name__ == '__main__':

     while not rospy.is_shutdown():
        move_turtle(6.5,6.5,1.0)

Salve o arquivo, depois de permissão para que ele seja executável com o comando abaixo;

chmod a+x roda_tartaruga.py

Com o roscore aberto em um terminal:

roscore

E a sua tartaruga aberta em outro:

rosrun turtlesim turtlesim_node 

Execute o seu programa roda_tartaruga.py;

./roda_tartaruga.py

ou

python3 roda_tartaruga.py

Funcionou!???

Hora do desafio!

Analise o código disponibilizado, altere os comandos e faça a nossa bela tartaruga desenhar um 8 na tela, use a sua criatividade e os seus conhecimentos em python, divirta-se!

roda_roda