{"id":488,"date":"2017-03-25T18:34:47","date_gmt":"2017-03-25T21:34:47","guid":{"rendered":"http:\/\/omecatronico.com.br\/blog\/?p=488"},"modified":"2019-11-20T17:15:34","modified_gmt":"2019-11-20T20:15:34","slug":"ros-kinetic-e-ide-arduino","status":"publish","type":"post","link":"https:\/\/omecatronico.com.br\/blog\/ros-kinetic-e-ide-arduino\/","title":{"rendered":"ROS kinetic e IDE Arduino"},"content":{"rendered":"\n<p>A plataforma Arduino \u00e9 uma \u00f3tima ferramenta para programar Hardware. Usando o pacote \u201c<a rel=\"noreferrer noopener\" href=\"http:\/\/wiki.ros.org\/rosserial_arduino\" target=\"_blank\">rosserial_arduino<\/a>\u201d \u00e9 poss\u00edvel se comunicar com o ROS diretamente atrav\u00e9s de um Arduino. O pacote rosserial implementa o protocolo de comunica\u00e7\u00e3o ROS atrav\u00e9s da UART da placa do Arduino. Inclusive tamb\u00e9m \u00e9 poss\u00edvel usar o ES8266 e atrav\u00e9s de WIFI via socket TCP usando esta mesma biblioteca. Com isso \u00e9 poss\u00edvel uma placa Arduino ser um n\u00f3(node) com todas as suas capacidades como: &#8220;publish&#8221; e &#8220;subscribe&#8221;, &#8220;publish TF transforms&#8221; e pegar o &#8220;ROS system time&#8221;. <\/p>\n\n\n\n<p>Instale o IDE do Arduino no Ubuntu atrav\u00e9s dos procedimentos detalhados em <a href=\"https:\/\/www.arduino.cc\/en\/Guide\/Linux\">https:\/\/www.arduino.cc\/en\/Guide\/Linux<\/a> ou caso use Windows, baixe e siga o passo a passo de instala\u00e7\u00e3o fornecido no pr\u00f3prio site do <a rel=\"noreferrer noopener\" aria-label=\"arduino.cc (abre numa nova aba)\" href=\"http:\/\/arduino.cc\" target=\"_blank\">arduino.cc<\/a><\/p>\n\n\n\n<p><strong>DICA:<\/strong> ao tentar instalar a vers\u00e3o 1.6.1 e a 1.8.2 aconteceu um <strong>erro<\/strong> durante a instala\u00e7\u00e3o. Ap\u00f3s pesquisas, encontrei que o erro est\u00e1 no \u201cinstall.sh\u201d que fica dentro da pasta do Arduino, para isso voc\u00ea ter\u00e1 que editar o arquivo. Entre na pasta e clique com bot\u00e3o direito do mouse sobre o arquivo \u201cinstall.sh\u201d e clique em editar com gedit. Onde tem a linha<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>RESOURCE_NAME=cc.arduino.arduinoide<\/strong><\/pre>\n\n\n\n<p>substitua por:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>RESOURCE_NAME=arduino-arduinoide<\/strong><\/pre>\n\n\n\n<p>Salve as altera\u00e7\u00f5es e repita o comando .\/install.sh no terminal.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Configurando o IDE Arduino para funcionar com o ROS<\/strong><\/h3>\n\n\n\n<p>Procedimentos mais detalhados em: <a href=\"http:\/\/wiki.ros.org\/rosserial_arduino\/Tutorials\/Arduino%20IDE%20Setup\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/wiki.ros.org\/rosserial_arduino\/Tutorials\/Arduino%20IDE%20Setup<\/a><\/p>\n\n\n\n<p><strong>1\u00ba<\/strong> Para usar o ROS com Arduino ser\u00e1 necess\u00e1ria uma biblioteca do ROS. Esta biblioteca deve ser gerada no computador (ou m\u00e1quina Virtual) onde existe a instala\u00e7\u00e3o do seu ROS. Depois de gerada, a biblioteca funciona em qualquer instala\u00e7\u00e3o do Arduino. Bastando apenas copi\u00e1-la para a pasta &#8220;libraries&#8221; do deu IDE Arduino. Vamos l\u00e1, num terminal no Ubuntu digite:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>sudo apt-get install ros-kinetic-rosserial-arduino<\/strong><br><strong>sudo apt-get install ros-kinetic-rosserial<\/strong><\/pre>\n\n\n\n<p>O primeiro comando instala depend\u00eancias para funcionar ROS com Arduino e o segundo comando instala o pacote ROS para comunica\u00e7\u00e3o serial (socket TCP inclu\u00eddo). <\/p>\n\n\n\n<p><strong>2\u00ba<\/strong> Depois, vamos gerar nossa biblioteca para Arduino com o comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>rosrun rosserial_arduino make_libraries.py .<\/strong><\/pre>\n\n\n\n<p>O ROS vai criar uma pasta com nome <strong>ros_lib<\/strong> na sua pasta HOME. Esta pasta cont\u00e9m a biblioteca para comunica\u00e7\u00e3o com o ROS. Copie e cole esta pasta na sua IDE Arduino dentro da pasta &#8220;libraries&#8221; que geralmente fica dentro da pasta arduino.<\/p>\n\n\n\n<p><strong>DICA:<\/strong> De prefer\u00eancia use uma pasta para os sketchs Arduino no seu home folder para evitar problemas de permiss\u00f5es do Linux. Exemplo: ap\u00f3s instalar o IDE Arduino verifique se ele j\u00e1 criou uma pasta &#8220;Arduino&#8221; no seu home. caso n\u00e3o tenha criado crie uma pasta no seu home com nome \u201cArduino\u201d e depois, dentro da IDE do Arduino, v\u00e1 em &#8220;File &gt; Preferences&#8221; e \u201csketchbook folder\u201d e insira l\u00e1 o caminho da pasta sketchbook que voc\u00ea acabou de criar exemplo &#8220;\/home\/seunome\/Arduino&#8221;. Reinicie o IDE.<\/p>\n\n\n\n<p><strong>3\u00ba<\/strong> Reinicie o IDE Arduino. Agora deve aparecer \u201cros_lib\u201d dentro de &#8220;File &gt; Examples&#8221;. E com isso agora voc\u00ea pode testar os exemplos.<\/p>\n\n\n\n<p><strong>OBS:<\/strong> Dentro do c\u00f3digo Arduino dever\u00e1 agora ser inclu\u00eddo <strong>#include &lt;ros.h> <\/strong>antes de qualquer outro c\u00f3digo ou outra declara\u00e7\u00e3o de include.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Testando:<\/h4>\n\n\n\n<p>Abra A IDE Arduino,  v\u00e1 em &#8220;File > Examples>HelloWorld&#8221;.  Com o Arduino UNO j\u00e1 plugado na USB, clique em upload. OBS: neste exemplo o Arduino ir\u00e1 transmitir a mensagem &#8220;hello world!&#8221; no t\u00f3pico &#8220;chatter&#8221;<\/p>\n\n\n\n<p>Caso apare\u00e7a o erro \u201d avrdude: ser_open(): can\u2019t open device \u201c\/dev\/ttyACM0\u2033: Permission denied \u201d ao tentar enviar o programa para a placa, v\u00e1 em um terminal e digite no terminal do linux<em>:<\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">  <em>sudo chmod a+rw \/dev\/ttyACM0<\/em> <\/pre>\n\n\n\n<p>Ap\u00f3s upload, abra um terminal no linux inicie o node(n\u00f3) Master com:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">roscore<\/pre>\n\n\n\n<p>Em um segundo terminal&#8230; inicie o n\u00f3 que ser\u00e1 respons\u00e1vel por fazer a ponte entre a porta USB e o sistema ROS:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rosrun rosserial_python serial_node.py \/dev\/ttyACM0<\/pre>\n\n\n\n<p>Em um terceiro terminal&#8230; vamos ver o que est\u00e1 sendo transmitido pelo Arduino no t\u00f3pico &#8220;chatter&#8221;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rostopic echo \/chatter<\/pre>\n\n\n\n<p><strong>DICA:<\/strong> para encerrar algum processo use &#8220;control+c&#8221; e para abrir uma nova aba no terminal &#8220;shift+control+t&#8221;.<\/p>\n\n\n\n<p>Ent\u00e3o \u00e9 isso&#8230; at\u00e9 a pr\u00f3xima =)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A plataforma Arduino \u00e9 uma \u00f3tima ferramenta para programar Hardware. Usando o pacote \u201crosserial_arduino\u201d \u00e9 poss\u00edvel se comunicar com o ROS diretamente atrav\u00e9s de um Arduino. O pacote rosserial implementa o protocolo de comunica\u00e7\u00e3o ROS atrav\u00e9s da UART da placa do Arduino. Inclusive tamb\u00e9m \u00e9 poss\u00edvel usar o ES8266 e atrav\u00e9s de WIFI via socket [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":470,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,15,31,32],"tags":[26,37,36,33],"_links":{"self":[{"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/posts\/488"}],"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=488"}],"version-history":[{"count":9,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/posts\/488\/revisions"}],"predecessor-version":[{"id":777,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/posts\/488\/revisions\/777"}],"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=488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/categories?post=488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/omecatronico.com.br\/blog\/wp-json\/wp\/v2\/tags?post=488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}