{"id":439,"date":"2017-03-18T21:30:51","date_gmt":"2017-03-19T00:30:51","guid":{"rendered":"http:\/\/omecatronico.com.br\/blog\/?p=439"},"modified":"2019-04-29T02:41:09","modified_gmt":"2019-04-29T05:41:09","slug":"439-2","status":"publish","type":"post","link":"https:\/\/omecatronico.com.br\/blog\/439-2\/","title":{"rendered":"Instala\u00e7\u00e3o ROS Kinetic"},"content":{"rendered":"<p><a href=\"http:\/\/ros.org\" target=\"_blank\" rel=\"noopener noreferrer\">ROS : Robotic Operating System.<\/a><\/p>\n<p style=\"text-align: justify;\">Esta s\u00e9rie de posts sobre o ROS ser\u00e1 baseada na documenta\u00e7\u00e3o oficial da p\u00e1gina <a href=\"http:\/\/ros.org\">ros.org<\/a>. Estou aprendendo ROS e documentando os principais t\u00f3picos a medida que <span style=\"text-decoration: line-through;\">der tempo<\/span> for estudando um por um. Existem v\u00e1rios caminhos e formas de instalar e trabalhar com o ROS, aqui est\u00e1 uma delas =).<\/p>\n<p style=\"text-align: justify;\">Se voc\u00ea ainda n\u00e3o sabe o que \u00e9 ROS&#8230; d\u00ea uma olhada em <a href=\"http:\/\/www.ros.org\/about-ros\/\">http:\/\/www.ros.org\/about-ros\/<\/a><\/p>\n<p style=\"text-align: justify;\">Abaixo est\u00e1 detalhada a configura\u00e7\u00e3o UBUNTU 16.04 LTS (Xenial) em conjunto com a vers\u00e3o do ROS (kinetic kame).<strong> OBS:<\/strong> Kinetic Kame funciona apenas com Ubuntu Wily (15.10) ou Ubuntu Xenial (16.04). \u00c9 aconselhado usar <a href=\"http:\/\/wiki.ros.org\/Distributions\" target=\"_blank\" rel=\"noopener noreferrer\">vers\u00f5es LTS do ROS<\/a>.\u00a0 Usar m\u00e1quina virtual dentro do Windows \u00e9 aconselhado mas se for usar o &#8220;Microsoft Kinect&#8221; podem ocorrer problemas de comunica\u00e7\u00e3o na porta USB.<\/p>\n<hr \/>\n<ol>\n<li><a href=\"http:\/\/releases.ubuntu.com\/16.04\/ubuntu-16.04.5-desktop-amd64.iso\" target=\"_blank\" rel=\"noopener noreferrer\">Baixar ISO do UBUNTU 16.04<\/a><\/li>\n<li>Se for criar M\u00e1quina virtual no Windows existe o programa &#8220;<a href=\"https:\/\/www.virtualbox.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Virtual Box<\/a>&#8221; da Oracle que \u00e9 gratuito.\u00a0 Baixar, instalar, criar maquina virtual e apontar para ISO do Ubuntu que acabou de baixar.<\/li>\n<li>Opcional: Usar modo Bridge na op\u00e7\u00e3o de Rede no Virtual Box para a m\u00e1quina virtual estar na mesma faixa de IP que o seu computador.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Considerando que voc\u00ea j\u00e1 instalou tudo e que para iniciar o processo voc\u00ea j\u00e1 deve estar no Ubuntu&#8230;Clique no bot\u00e3o de inicio do Ubuntu e Abra o &#8220;Terminal&#8221;(\u00e9 s\u00f3 digitar <strong>ter<\/strong> no bot\u00e3o de in\u00edcio do Ubuntu) e siga os passos a seguir.<\/p>\n<p style=\"text-align: justify;\"><strong>DICA:<\/strong> &#8220;control+V&#8221; n\u00e3o funciona no terminal. voc\u00ea pode usar &#8220;shift+control+v&#8221; ou pressionar o bot\u00e3o do meio(a rodinha) do mouse para poder colar o texto.<\/p>\n<p style=\"text-align: justify;\"><strong>DICA 2:<\/strong> Podem acontecer erros se o seu Ubuntu n\u00e3o estiver atualizado. Busque &#8220;atualizador de Programas&#8221; na pesquisa do sistema. E atualize o sistema antes de tentar instalar o ROS.<\/p>\n<p style=\"text-align: justify;\"><strong>DICA 3:<\/strong> cuidado ao copiar e colar comando que contenham aspas simples ou duplas pois existem mais de um tipo de aspas simples&#8230; leia mais em <a href=\"https:\/\/www.vivaolinux.com.br\/dica\/LibreOffice-Corrigindo-aspas-duplas-simples\" target=\"_blank\" rel=\"noopener noreferrer\">corrigindo aspas simples e duplas.<\/a><\/p>\n<hr \/>\n<p style=\"text-align: justify;\"><strong>1.<\/strong> Incluir na sua lista de reposit\u00f3rios de pacotes da instala\u00e7\u00e3o do Ubuntu o &#8220;packages.ros.org&#8221;:<\/p>\n<pre><strong><small>sudo sh -c 'echo \"deb http:\/\/packages.ros.org\/ros\/ubuntu $(lsb_release -sc) main\" &gt; \/etc\/apt\/sources.list.d\/ros-latest.list'<\/small><small> <\/small><\/strong><\/pre>\n<p><strong>2.<\/strong> Instalar uma chave de acesso e autentica\u00e7\u00e3o para o ros.org<\/p>\n<pre><strong><small>sudo apt-key adv --keyserver hkp:\/\/ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 <\/small><\/strong><\/pre>\n<p><strong>3.<\/strong> Agora vamos atualizar a lista de pacotes dispon\u00edveis:<\/p>\n<pre><strong><small>sudo apt-get update <\/small><\/strong><\/pre>\n<p style=\"text-align: justify;\"><strong>4.<\/strong> Agora vamos instalar o ROS completo (ROS, rqt, rviz, robot-generic libraries, 2D\/3D simulators, navigation and 2D\/3D perception). Existem v\u00e1rias maneiras de instalar apenas os recursos que voc\u00ea quer, mas n\u00e3o faz parte deste tutorial.<\/p>\n<pre><strong><small>sudo apt-get install ros-kinetic-desktop-full <\/small><\/strong><\/pre>\n<p style=\"text-align: justify;\"><strong>5.<\/strong> Antes de usar o ROS temos de inicializar o ROSDEP. Ele vai servir para instalar depend\u00eancias de c\u00f3digos necess\u00e1rios para compila\u00e7\u00e3o de alguns c\u00f3digos do pr\u00f3prio n\u00facleo do ROS.<\/p>\n<pre><strong><small>sudo rosdep init <\/small><\/strong><\/pre>\n<p>Depois atualize o rosdep:<\/p>\n<pre><strong><small>rosdep update <\/small><\/strong><\/pre>\n<p style=\"text-align: justify;\"><strong>6.<\/strong> Agora vamos adicionar as vari\u00e1veis de ambiente no shell para que toda vez que voc\u00ea abrir o terminal ele reconhe\u00e7a os comandos do ROS.<\/p>\n<pre><strong><small>echo \"source \/opt\/ros\/kinetic\/setup.bash\" &gt;&gt; ~\/.bashrc <\/small><\/strong><\/pre>\n<p>Depois:<\/p>\n<pre><strong><small>source ~\/.bashrc <\/small><\/strong><\/pre>\n<p style=\"text-align: justify;\"><strong>7.<\/strong> Instalar o ROSINSTALL. Ele \u00e9 uma ferramenta de linha de comando para baixar facilmente muitas \u00e1rvores de c\u00f3digos fonte para pacotes ROS com apenas um comando. Recomendado instalar.<\/p>\n<pre>sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential<\/pre>\n<p style=\"text-align: justify;\"><strong>8.<\/strong> Criar uma pasta para ser o seu &#8220;Workspace&#8221; (\u00c1rea de trabalho) do ROS, onde ficar\u00e3o os seus projetos e c\u00f3digos de testes.\u00a0 Executar o comando abaixo no terminal criar\u00e1 uma pasta dentro do seu HOME com nome &#8220;catkin_ws&#8221; e dentro dela &#8220;src&#8221;:<\/p>\n<pre>mkdir -p ~\/catkin_ws\/src<\/pre>\n<p>Depois vamos navegar at\u00e9 a pasta do Workspace:<\/p>\n<pre><strong><small>cd catkin_ws<\/small><\/strong><\/pre>\n<p style=\"text-align: justify;\">E finalmente executaremos o comando make do catkin para configurar todo seu workspace com pastas ex.:\u00a0 &#8220;build&#8221;, &#8220;source&#8221;&#8230;<\/p>\n<pre><strong><small>catkin_make<\/small><\/strong><\/pre>\n<p style=\"text-align: justify;\"><strong>9.<\/strong> Agora vamos tornar padr\u00e3o o novo workspace (catkin_ws) e tamb\u00e9m para n\u00e3o ter que executar toda vez que abrir um terminal o comando de source para seu home do catkin&#8230; vamos adiciona-lo ao bashrc para ficar como padr\u00e3o. Complete o comando abaixo com seu nome de usu\u00e1rio do Ubuntu ( aparece no terminal como\u00a0 usuario@suaMaquina: ), assim, onde tem xxxxx apague e insira seu nome de usuario:<\/p>\n<pre><strong><small>echo \"source \/home\/xxxxx\/catkin_ws\/devel\/setup.bash\" &gt;&gt; ~\/.bashrc<\/small><\/strong><\/pre>\n<p>Depois:<\/p>\n<pre><strong><small>source ~\/.bashrc<\/small><\/strong><\/pre>\n<p style=\"text-align: justify;\"><strong>10.\u00a0<\/strong>Para testar use o comando abaixo. Dever\u00e1 aparecer como resposta &#8220;<strong>\/home\/xxxxx\/catkin_ws\/src:\/opt\/ros\/kinetic\/share&#8221;<\/strong>.<\/p>\n<pre><strong><small>echo $ROS_PACKAGE_PATH<\/small><\/strong><\/pre>\n<p style=\"text-align: justify;\"><strong>DICA:<\/strong> Outra maneira de testar \u00e9 fechar os terminais e abrir um e digitar <strong>roscd<\/strong> que deve levar voc\u00ea para sua pasta de workspace &#8220;catkin_ws\/devel&#8221;.<\/p>\n<p style=\"text-align: justify;\">Finalmente&#8230; a instala\u00e7\u00e3o terminou. Agora vamos para opcionais.<\/p>\n<p style=\"text-align: justify;\">\n<hr \/>\n<h3 style=\"text-align: center;\"><strong>P\u00f3s instala\u00e7\u00e3o<\/strong><\/h3>\n<p>Alguns programas podem ser \u00fateis:<\/p>\n<ul>\n<li>O <strong>XDOTOOL<\/strong> permite ter v\u00e1rias abas no terminal atrav\u00e9s de shift+ctrl+t. Para instalar:<\/li>\n<\/ul>\n<pre><strong>sudo apt-get install xdotool<\/strong><\/pre>\n<ul>\n<li>Um editor leve e pr\u00e1tico, principalmente se voc\u00ea usa m\u00e1quina virtual, \u00e9 o <a href=\"https:\/\/code.visualstudio.com\/download\" target=\"_blank\" rel=\"noopener noreferrer\">Visual Studio Code<\/a>. Baixe a vers\u00e3o &#8220;.deb&#8221; j\u00e1 que voc\u00ea est\u00e1 usando Ubuntu e instale.<\/li>\n<\/ul>\n<hr \/>\n<p>DICA: Se voc\u00ea \u00e9 iniciante no terminal do Linux&#8230; \u00e9 interessante dar uma olhada nesse <a href=\"http:\/\/www.ee.surrey.ac.uk\/Teaching\/Unix\/\">Guia R\u00e1pido de comandos<\/a><\/p>\n<h2 style=\"text-align: center;\"><strong>Lembretes finais:<\/strong><\/h2>\n<ul>\n<li>O ROS est\u00e1 instalado na pasta &#8220;opt\/ros\/kinetic&#8221;<\/li>\n<li>o workspace \u00e9 onde se encontram o &#8220;setup.bash&#8221; e &#8220;setup.h&#8221; e por padr\u00e3o ficam em &#8220;opt\/ros\/kinetic&#8221;. Durante a instala\u00e7\u00e3o acima criamos o workspace chamado &#8220;catkin_ws&#8221; e configuramos para ser o padr\u00e3o. O novo &#8220;setup.bash&#8221; agora est\u00e1 em &#8220;catkin_ws\/devel&#8221;<\/li>\n<li>Os &#8220;packages&#8221; s\u00e3o os projetos individuais que ficam dentro do workspace, mais precisamente, dentro de &#8220;catkin_ws\/src&#8221;<\/li>\n<li>Para criar um projeto de nome &#8220;projeto1&#8221; e j\u00e1 com suporte \u00e0s mensagens padr\u00e3o do ROS, python e C++, v\u00e1 para pasta &#8220;catkin_ws\/src&#8221; e execute:<\/li>\n<\/ul>\n<pre>catkin_create_pkg projeto1 std_msgs rospy roscpp\ncd ..\ncatkin_make<\/pre>\n<ul>\n<li>O projeto estar\u00e1 criado e compilado em &#8220;catkin_ws\/src\/projeto1&#8221;<\/li>\n<li>Dentro de projeto1 existe a pasta &#8220;src&#8221; onde ficar\u00e3o os c\u00f3digos fonte de seu projeto. Tamb\u00e9m dentro da pasta do projeto1 exite a pasta &#8220;include&#8221;, onde ficar\u00e3o as bibliotecas que voc\u00ea precisar adicionar.<\/li>\n<li>Ap\u00f3s criar os c\u00f3digos fonte dentro de &#8220;src&#8221; \u00e9 necess\u00e1rio adicionar ao &#8220;CMakeLists.txt&#8221; a informa\u00e7\u00e3o que eles existem e como devem ser compilados. Para um n\u00f3 de nome &#8220;node1&#8221;, e um programa de nome &#8220;publisher1.cpp&#8221;, adicionar:<\/li>\n<\/ul>\n<pre>add_executable(node1 scr\/publisher1.cpp)\ntarget_link_libraries (node1 ${catkin_LIBRARIES})<\/pre>\n<ul>\n<li>Agora voltar para o workspace e executar o catkin_make.<\/li>\n<li>Para rodar um &#8220;n\u00f3&#8221; ser\u00e1 usado o comando &#8220;rosrun&#8221; seguido do nome do &#8220;package&#8221; e seguido do nome do &#8220;n\u00f3&#8221;<\/li>\n<li>Dica: apertar &#8220;TAB&#8221; duas vezes seguidas ap\u00f3s digitar o nome do &#8220;package&#8221; vai listar o nome de todos os poss\u00edveis execut\u00e1veis do pacote.<\/li>\n<li>para visualizar os n\u00f3s e suas rela\u00e7\u00f5es com os t\u00f3picos de forma gr\u00e1fica, existe o rqt_graph:<\/li>\n<\/ul>\n<pre>rosrun rqt_graph rqt_graph<\/pre>\n<hr \/>\n<h3 style=\"text-align: center;\">Tutoriais<\/h3>\n<p style=\"text-align: justify;\">P. Fankhauser, D. Jud, M. Wermelinger, M. Hutter, \u201cProgramming for Robotics \u2013 Introduction to ROS\u201d, ETH Zurich, 2017. DOI: 10.13140\/RG.2.2.14140.44161<\/p>\n<p style=\"text-align: justify;\">Pode ser encontrado em <a href=\"http:\/\/robohub.org\/programming-for-robotics-introduction-to-ros\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/robohub.org\/programming-for-robotics-introduction-to-ros\/<\/a><\/p>\n<p style=\"text-align: justify;\">Esse curso \u00e9 muito bom. Por\u00e9m algumas partes n\u00e3o funcionam pois eles utilizam o ROS Indigo com o rob\u00f4 Husky que ainda n\u00e3o foi portado para o ROS Kinetic :(. Mas o restante das explica\u00e7\u00f5es s\u00e3o excelentes. Abordam os seguintes t\u00f3picos:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"text-align: justify;\">ROS architecture: Master nodes, topics, messages, services, parameters and actions<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"text-align: justify;\">Console commands: Navigating and analyzing the ROS system and the catkin workspace<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"text-align: justify;\">Creating ROS packages: Structure, launch-files, and best practices<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"text-align: justify;\">ROS C++ client library (roscpp): Creating your own ROS C++ programs<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"text-align: justify;\">Simulating with ROS: Gazebo simulator, robot models (URDF) and simulation environments (SDF)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"text-align: justify;\">Working with visualizations (RViz) and user interface tools (rqt)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"text-align: justify;\">Inside ROS: TF transformation system, time, bags<\/li>\n<\/ul>\n<h3>Aula 1:<\/h3>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/0BxVPCInS3M\" width=\"640\" height=\"360\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h3>Aula 2:<\/h3>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/jYqDnuxTwK8\" width=\"640\" height=\"360\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h3>Aula 3:<\/h3>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/_GgHFuib_LU\" width=\"640\" height=\"360\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h3>Aula 4:<\/h3>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/feXC7aQrkeM\" width=\"640\" height=\"360\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<hr \/>\n","protected":false},"excerpt":{"rendered":"<p>ROS : Robotic Operating System. Esta s\u00e9rie de posts sobre o ROS ser\u00e1 baseada na documenta\u00e7\u00e3o oficial da p\u00e1gina ros.org. Estou aprendendo ROS e documentando os principais t\u00f3picos a medida que der tempo for estudando um por um. Existem v\u00e1rios caminhos e formas de instalar e trabalhar com o ROS, aqui est\u00e1 uma delas =). [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":470,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32],"tags":[37,36,33,34,35],"_links":{"self":[{"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/posts\/439"}],"collection":[{"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/comments?post=439"}],"version-history":[{"count":25,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/posts\/439\/revisions"}],"predecessor-version":[{"id":723,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/posts\/439\/revisions\/723"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/media\/470"}],"wp:attachment":[{"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/media?parent=439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/categories?post=439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/tags?post=439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}