Fórmulário
Linux
Básico
- Mostrar o caminho atual
pwd
- Listar os arquivos no diretório atual
ls
- Mudar de diretório
cd <caminho do diretório>
- Mostar o conteúdo de um arquivo
cat <arquivo>
- Abrir um arquivo em um editor de texto
nano <nome do arquivo>
Manipulando arquivos e diretórios
- Criar arquivo em branco
touch <arquivo>
- Copiar arquivos
cp <arquivo opiado> <diretório de destino>
- Mover arquivos
mv <arquivo> <destino>
- Renomear arquivos
mv <nome atual do arquivo> <novo nome>
- Deletar arquivos
rm <arquivo>
- Criar diretório
mkdir <nome do diretório>
- Deletar diretórios vazios
rmdir <diretório>
- Deletar diretórios com arquivos
rm -r <diretório>
- Modificar as permissões de um arquivo
Todo arquivo pode possuir 8 tipos de permissões diferentes: 0 - Sem permissão 1 - Permissão para executar 2 - Permissão para escrever 3 - Permissão para escrever e executar 4 - Permissão para ler 5 - Permissão para ler e executar 6 - Permissão para ler e escrever 7 - Permissão para ler, escrever e executar
Essa permissão pode ser dada para interagir com 3 tipos de usuários: O dono - representa o usuário dono do arquivo no computador. Grupos - Grupos de mais de um usuário. Todos - Todos os usuários naquele computador.
Para alterar as permissões de um arquivo, é necessário utilizar o comando chmod seguido de um número de 3 algarimso, onde o primeiro representa as permissões para o usuário dono do arquivo, o segundo, do grupo de usuários e o terceiro, de todos os usuários e, por último, o nome do arquivo que queremos alterar as permissões. Por exemplo, se quisermos dar permissão para o arquivo 'EP 1' ler, escrever e executar arquivos do usuário dono do arquivo, ler e escrever arquivos do grupo de usuários e de todos os usuários, nós devemos fazer o seguinte:
chmod 766 'EP 1'
Manipulando o sistema
- Executar como Super Usuário
sudo <comando a ser executado>
- Procurar o caminho para um arquivo
locate <nome do arquivo>
- Exibir os processos em execução
ps
- Parar um processo
kill <ID do processo>
Manipulando pacotes (Apenas para distribuições baseadas no Debian)
- Instalando pacotes
apt-get install <nome do pacote.
- Removendo pacotes
apt-get remove <nome do pacote>
- Removendo pacote e seus arquivos de configuração
apt-get purge <nome do pacote>
- Atualizando pacotes
apt-get -u upgrade
- Removendo pacotes que não serão mais utilizados
apt-get clean
apt-get autoclean
- Adicionando novos repositórios de pacotes Utilize o comando
sudo nano /etc/apt/sources.list
Com o editor de texto Nano escreva, no final do arquivo, o nome do repositório que deseja adicionar.
- Atualizando o índice de respositórios
apt-get update
Comandos úteis (e legais)
- Comparar a diferença entre dois códigos linha por linha
diff <código 1> <código 2>
- Procurar expressões dentro de arquivos
grep <expressão> <arquivo>
- Mostrar o manual de um comando
man <comando>
- YES
yes
Firmware
Simulação/Gazebo
Iniciar gazebo
O comando abaixo abre o gazebo
gazebo <opções de inicialização>
Mas também da para abrí-lo com mais condições.
Pode abrir diretamente um mundo usando o mesmo comando colocando o caminho para o .world
, ou colocando o nome do arquivo estando na pasta world.
Por exemplo: gazebo exemplo.world
Mais uma explicação ou informaçes de uso sobre o comando ou codigo
Também pode iniciar o gazebo fazendo a simulação da PX4. Estando na raiz do Firmware dê o comando:
make px4_sitl gazebo
E também pode inciar o Gazebo junto com o ROS usando o roslaunch, e é bom por que da para abrir rosnodes, packages e outras funções do ros junto.
roslaunch gazebo_ros <exemplo.launch>
No roslaunch pode colocar vários argumentos de incialização, clique aqui para ver
Tutorial de inicialização do gazebo
ROS
Terminal
Esses são os mais comuns. Se você digitar só o início do comando (tipo rostopic
) ele deve te dar a lista de todos. Colocar -h
no final pede ajuda sobre a sintaxe.
Topics
* Lista todos os tópicos ativos
rostopic list
* Informações sobre um tópico
rostopic info [tópico]
* Vê o que tá sendo publicado no tópico
rostopic echo [tópico]
* Vê a frequência com que estão publicando no tópico
rostopic hz [tópico]
* Publica no tópico
rostopic pub [tópico] [tipo de mensagem] [args...]
Messages
* Lista todas os tipos de mensagem (são muitos kkk)
rosmsg list
* Informações sobre um tipo de mensagem
rosmsg show [mensagem]
Services
* Lista todos os serviços
rosservice list
* Informações sobre um serviço
rosservice info [serviço]
* Chama um serviço
rosservice call [serviço] [args...]
Nodes
* Lista todos os nodes
rosnode list
* Informações sobre um node
rosnode info [node]
Params
* Lista todos os parâmetros
rosparam list
* Lê um parâmetro
rosparam get [param]
* Escreve em um parâmetro
rosparam set [param] [valor]
Execução
* Inicia o ROS
roscore
* Executa um node
rosrun [package] [node]
* Executa um launchfile (não requer roscore)
roslaunch [package] [arquivo .launch] [argumento:=valor ...]
ROS Bags
* Grava os tópicos 1, 2 e 3
rosbag record [topico1] [topico2] [topico3] e 3
* Grava todos os tópicos
rosbag record -a
* Executa um rosbag
rosbag play [nome_da_rosbag].bag
Outros
* Acha um package e dá cd pra ele
roscd [package]
* Grafo dos tópicos
rqt_graph
* RViz (visualização de mensagens)
rviz
Catkin
* Cria o workspace (deve ser executado DENTRO DA PASTA SRC DO WORKSPACE)
catkin_init_workspace
* Compila o workspace
catkin build
* Limpa o workspace (não apaga os packages)
catkin clean
* Deinicializa o workspace
catkin clean --deinit
* Cria um package (execute dentro da src)
catkin_create_pkg [nome no package] [dependencias...]
Python
Os comandos não estão em ordem pra serem executados em um programa, apenas listados.
# Essa linha precisa ser a primeira de todo código
#!/usr/bin/env python
# Tudo que vc faz passa por aqui, precisa importar
import rospy
# Declara que o programa é um node (NECESSÁRIO)
rospy.init_node("nome_do_node")
# Cria um Publisher
pub = rospy.Publisher("nome_do_topico", TipoDeMsg, queue_size=10)
# Publica uma mensagem
pub.publish(ObjetoMensagem)
# Cria um Subscriber
rospy.Subscriber("nome_do_topico", TipoDeMsg, funcao_de_callback)
# Deixa o programa executando (sem fazer nada)
rospy.spin()
# Cria um Rate
rate = rospy.Rate(frequencia_Hz)
# Espera completar o ciclo do rate
rate.sleep()
# Verifica se o ROS fechou (geralmente usado como condição em um while)
rospy.is_shutdown()