perfil
Leitor e escritor, com especial entusiasmo por ficção científica e contos de terror.
Engenheiro de computação e desenvolvedor de software nas horas vagas.
habilidades
linguagens de programação
Python
Javascript
C++
Java
desenvolvimento web
HTML
CSS
Javascript
Vue.js
Node.js
Nginx
bancos de dados
PostgreSQL
MongoDB
sistemas operacionais & plataformas de hardware
GNU/Linux
Android
Arduino
Raspberry Pi
bibliotecas, pacotes & frameworks
Numpy
Scipy
Matplotlib
skimage
sklearn
NetworkX
OpenCV
Keras
PyTorch
Flask
Spacy
Express
Sequelize
Mocha
Socket.IO
projetos
Neochess
Servidor de xadrez minimalista
Neochess é fruto de um desafio que fiz comigo mesmo: implementar um servidor de xadrez em uma semana. O núcleo foi escrito em uma semana, mas algumas melhorias ainda estão sendo adicionadas. O foco do Neochess é o próprio jogo de xadrez. Não há contas, nem ratings e os nomes de usuário são gerados automaticamente para uso único. O website foi desenvolvido usando Vue.js, juntamente a outras ferramentas de software livre. O servidor é Node.js, usando banco de dados MongoDB. Sincronização em tempo real é realizada com Socket.io. Fique à vontade para testar ou me chamar para uma partida.
Aerial
Planejamento de rotas terrestres usando imagens aéreas
O objetivo desse projeto é auxiliar no planejamento de rotas para veículos autônomos terrestres. A ideia é mapear imagens aéreas do ambiente e definir quais terrenos são possíveis de atravessar usando técnicas de processamento de imagens e heurísticas especializadas. O uso de imagens aéreas aumenta significativamente a abrangência do planejamento e ajuda a otimizar o processo de navegação autônoma. Este projeto faz parte do meu trabalho de conclusão do curso de Engenharia de Computação na Universidade Federal do Ceará, foi desenvolvido em Python e é descrito em artigo publicado no periódico Expert Systems with Applications.
Turret
Controle de acesso usando visão computacional
Esse projeto foi iniciado com o propósito de monitorar entradas e saídas de pessoas no laboratório do PET da Engenharia de Computação, mas também foi usado no laboratório de pesquisa do PPGEEC. Realizei a maior parte do design e implementação do software durante meu estágio supervisionado. A Turret processa o vídeo capturado por uma câmera, identifica frames de movimento, realiza detecção facial e registra os momentos de passagem de pessoas. Além disso, existe um módulo chatbot que responde a perguntas via Telegram usando processamento de linguagem natural. Por exemplo, há suporte para perguntas e comandos como "Quem passou pelo laboratório hoje?" ou "Oi, Turret, envie o relatório da movimentação do dia". O código foi desenvolvido em Python e está disponibilizado no Github.
Botkit
Compreensão de linguagem natural para construção de chatbots
Esse projeto surgiu da necessidade de extrair informações a partir de mensagens escritas para melhorar o reconhecimento de intenções de um cliente de chatbot. O módulo NLU do Botkit reúne funções de diversos pacotes de software livre em um framework compacto que pode ser treinado para processar entradas de texto e reconhecer idioma, sentimentos, entidades e intenções. O projeto foi desenvolvido em Python e está disponível no Github. Botkit é usado na Turret para dar suporte à sua funcionalidade de chatbot.
Input: Who is David?
Output:
{
"entities": [
{
"confidence": 0.0,
"name": "David",
"start": 2,
"stop": 3,
"type": "person"
}
],
"intent": "who",
"intents": {
"greetings": 0.0,
"who": 2.0
},
"language": "en",
"sentiments": {
"compound": 0.0,
"negative": 0.0,
"neutral": 1.0,
"positive": 0.0
},
"text": "Who is David?",
"text_tagged": "Who is #person#?"
}
Input: Hello, Botkit :)
Output:
{
"entities": [
{
"confidence": 0.0,
"name": "Botkit",
"start": 2,
"stop": 3,
"type": "person"
}
],
"intent": "greetings",
"intents": {
"greetings": 0.75,
"who": 0.5
},
"language": "en",
"sentiments": {
"compound": 0.4588,
"negative": 0.0,
"neutral": 0.4,
"positive": 0.6
},
"text": "Hello, Botkit :)",
"text_tagged": "Hello, #person# :)"
}
Vince
Um chatbot pessoal que agiliza buscas, responde a perguntas e realiza diversas tarefas
Vince é um projeto pessoal que desenvolvi para me auxiliar em buscas rápidas por informação e realização de tarefas computacionais diversas. Ainda está em fase de protótipo, mas sua primeira versão é capaz de responder a entradas de linguagem natural, responder a perguntas básicas acerca do tempo, definições de termos, buscas por músicas e letras, entre outras pequenas tarefas. Foi desenvolvido como um sistema RESTful e, portanto, pode responder através de diversas plataformas, tendo sido implementada até o momento apenas a interface via Telegram. O código foi desenvolvido em Python e permanece por enquanto em um repositório privado. Vince é um acrônimo para Virtual INtelligent Computer Entity.
Hydra
Um mini rover robótico remotamente controlado para mapear ambientes e localizar objetos
A Hydra é um mini rover robótico de acionamento diferencial controlado por um Raspberry Pi Modelo B. Ela possui um sensor ultrassônico, uma unidade IMU MPU6050 com acelerômetros e giroscópios, uma câmera RPi modelo v1 e módulo WiFi para comunicação em duas vias com um computador companheiro, a partir do qual instruções podem ser submetidas. No presente momento, a Hydra é controlada manualmente por comandos transmitidos pelo computador companheiro, mas um módulo de navegação autônoma está em desenvolvimento. Também há planos de implementar algoritmos para mapeamento do ambiente e localização de objetos. Esse projeto é desenvolvido em parceria com meu amigo Márcio Albuquerque e foi utilizado nos experimentos de Aerial publicados na Expert Systems with Applications.
Hydra no Github • Artigo na ESWADragão sem Chama
Website sobre programação, hacking e DIY
Website sobre programação, hacking e DIY
O Dragão sem Chama é um projeto que desenvolvi junto com um grupo de amigos para produzir conteúdo sobre temas de tecnologia, programação, hacking e DIY. Minha principal contribuição para o Dragão é uma série de tutoriais sobre desenvolvimento Android com foco no programador iniciante, abrangendo tópicos como uso do Bluetooth, integrações com Arduino e processamento com múltiplas threads.
Programação Bluetooth no Android
Comunicação Bluetooth entre Android e Arduino
Android, Activities e como alternar entre várias telas
experiência profissional
05/2019 - Atualmente
Tester de aplicativos móveis
Freelance na Testlio, em parceria com Snapchat
Esse é um trabalho ocasional que realizo quando existe demanda por testes manuais no aplicativo Snapchat, através da plataforma Testlio. Os testes buscam isolar problemas de localização ou bugs na interface gráfica e demais funcionalidades do app. Relatórios acerca dos bugs são submetidos diretamente às equipes de desenvolvimento e garantia de qualidade do Snapchat. Participo de um grupo contendo mais de 150 testers distribuídos por todo o mundo, com abrangência de 40 idiomas. O desafio mais relevante nesse trabalho é manter o alto nível de qualidade nos relatórios de bugs, como exigido pelo Snapchat e reforçado pela Testlio.
06/2017 - 06/2018
Desenvolvedor Machine Learning & Programador de Chatbots
Estágio na Elife
O meu trabalho nesse estágio foi desenvolver protótipos de funcionalidades e produtos baseados em aprendizado de máquina e processamento de linguagem natural. Implementei diversos microsserviços voltados a chatbots de texto e voz, mineração de dados e classificação de texto. Um dos desafios mais relevantes foi desenvolver um sistema de sugestão automática de respostas inteligentes. Tal sistema foi aplicado na plataforma Buzzmonitor, um dos principais produtos da empresa, voltado à gestão de relacionamento com o cliente e utilizado por diversas marcas importantes no cenário econômico. Outro desafio foi a prototipagem de chatbots de voz para contato com clientes via telefone. Os modelos de aprendizado de máquina trabalhados durante esse estágio baseavam-se, majoritariamente, em redes neurais convolucionais ou recorrentes, implementados em Python usando Keras ou TFLearn e TensorFlow. Node.js também foi utilizado para corrigir bugs e estender funcionalidades dos chatbots de texto que já estavam em uso pela empresa.
05/2016 - 08/2016
Assistente de Pesquisa & Programador
Estágio no Medical Imaging Research Group, Vancouver Coastal Health Research Institute
Realizei esse estágio durante um período de intercâmbio no Canadá. Trabalhei em um grupo de pesquisa de imagens médicas associado à Universidade de British Columbia, com laboratório no Hospital Geral de Vancouver. O foco do grupo era o desenvolvimento de tecnologias de tomografia computadorizada. O meu trabalho foi implementar uma ferramenta de conversão de dados tomográficos brutos para o formato Interfile, que poderia ser processado e analisado pelo grupo com o software STIR. Os dados brutos poderiam ser gerados por simulações ou por um tomógrafo real. O maior desafio envolvido nesse estágio foi compreender os dados tomográficos brutos, o que exigiu estudo da física envolvida no processo e da engenharia das máquinas de tomografia. Além disso, também foi necessário ler uma extensa documentação acerca dos arquivos Interfile e adequar o software desenvolvido aos requerimentos do formato. O software de conversão foi implementado em Python.
03/2015 - 07/2015
Programador Python
Estágio na Universidade Federal do Ceará - Campus Sobral
Durante esse estágio, iniciei o desesenvolvimento da Turret, um software de monitoramento e controle de acesso a ambientes físicos, (e.g., salas e laboratórios). O programa usa uma câmera para registrar a entrada e saída de pessoas no ambiente. Trabalhei usando a linguagem Python e desenvolvi diversas funcionalidades como detecção de movimentos, detecção e reconhecimento facial, suporte a backup dos registros no Google Drive e uma interface gráfica para facilitar a configuração do programa. O primeiro projeto da Turret está disponível no Github, assim como sua versão atual, que continuou sendo desenvolvida após o término do estágio. A Turret foi usada pelo PET da Engenharia de Computação e, posteriormente, no laboratório do PPGEEC.
Turret v0 no Github (versão desenvolvida durante o estágio)
formação acadêmica
2018 - Atualmente
Mestrado em Engenharia Elétrica & Computação
Universidade Federal do Ceará - Campus Sobral
Área: Visão Computacional
GPA: 3,7/4
2015 - 2016
Intercâmbio. Faculty of Applied Science. Electrical & Computer Engineering
University of British Columbia - Campus Vancouver
Financiado pelo CNPQ, Ciência sem Fronteiras
2012 - 2018
tópicos de pesquisa
2019 - Atualmente
Traversability Learning from Aerial Images with Fully Convolutional Neural Networks
Carlos David Braga Borges, Jarbas Joaci de Mesquita Sá Junior
Under review
Abstract. Traversability analysis is essential for ground robot operations because it allows the incorporation of knowledge about traversable and non-traversable terrains into the robot's planning algorithm. It is possible to use aerial data to compute traversability maps for large regions and use them to assist in ground robot navigation. Most published methods to generate these maps from aerial images use terrain classification or heuristics to determine traversability. However, methods based on classification or handcrafted heuristics exhibit limitations with regard to output quality and processing time. To improve these variables, this work explores a new method to compute a traversability map from an aerial image in one forward pass through a fully convolutional neural network. We show that this method can be employed to generate traversability maps in diverse environments and demonstrate that it provides useful information for a planner algorithm to compute safe paths.
2017 - 2019
A strategy and evaluation method for ground global path planning based on aerial images
Carlos David Braga Borges, Antonio Márcio Albuquerque Almeida, Iális Cavalcante Paula Júnior, Jarbas Joaci de Mesquita Sá Junior
Published at Expert Systems with Applications
Abstract. Autonomous robot navigation consists of establishing a sequence of actions that guarantee safe and efficient locomotion for a robotic system. This work focuses on outdoor ground robot navigation guided by aerial images. We propose a pipeline of image processing, traversability estimation, terrain representation and route planning capable of assessing whether a desired target location is reachable or not. We also propose a dataset and an evaluation method to quantify the average quality of generated paths and measure how well a planning strategy finds possible routes and rejects impossible ones. This evaluation was applied to identify a parameter combination that maximized path feasibility recognition and average path quality. Our results show that the proposed strategy identifies the correct action in 85.8% of the test cases and takes an average of 2.3 s for mapping and 100 ms for path planning over 300 × 300 m² areas in images of size 1000 × 1000 pixels. We successfully employed our proposed method in a small scale experiment to guide our Hydra v3 mini rover.
2017 - 2019
Static Hand Gesture Recognition Based on Convolutional Neural Networks
Raimundo F. Pinto, Carlos D. B. Borges, Antônio M. A. Almeida, Iális C. Paula
Published at Journal of Electrical and Computer Engineering
Abstract. This paper proposes a gesture recognition method using convolutional neural networks. The procedure involves the application of morphological filters, contour generation, polygonal approximation, and segmentation during preprocessing, in which they contribute to a better feature extraction. Training and testing are performed with different convolutional neural networks, compared with architectures known in the literature and with other known methodologies. All calculated metrics and convergence graphs obtained during training are analyzed and discussed to validate the robustness of the proposed method.
2017
Aerial Image Analysis for Estimation of Ground Traversal Difficulty in Robot Navigation
C. David B. Borges, A. Márcio A. Almeida, Iális C. de Paula
Published at WVC 2017
Abstract. The use of unmanned aerial vehicles (UAV) for aid in unmanned ground vehicle (UGV) navigation makes it possible to plan routes more efficiently. Aerial images contain information about the environment that would be hard to obtain from the surface. This can be exploited to provide ground robots with route instructions. Digital image processing and computer vision techniques can identify regions of interest for UGV traversal. This article brings forth the concept of traversal difficulty image (TDI) and proposes techniques for TDI computation, with images taken from UAVs as input. We analyze the performance of four techniques and our results show that at least three of them can consistently identify levels of traversal difficulty associated with regions in the input image.
2017
Keyblock: a software architecture to prevent keystroke injection attacks
C. David B. Borges, J. Rafael B. de Araujo, Robson L. de Couto, A. Márcio A. Almeida
Published at SBSeg 2017
Abstract. This work investigates a solution to mitigate the threat of keystroke injection attacks. Current defense mechanisms often require relatively expensive hardware and time consuming configuration. We describe and test the effectiveness of a software layer between USB input hardware and processes. Our software, Keyblock, intercepts events from newly connected devices and uses keystroke dynamics analysis to detect whether an attack is in course. By detecting and immediately disabling devices with anomalous typing patterns, Keyblock provides a software-only automatic solution to prevent keystroke injection.
2017
Time analysis of attacks to USB plug-and-play by human interface device emulation and keystroke injection
C. David B. Borges, J. Rafael B. de Araujo, Robson L. de Couto, A. Márcio A. Almeida
Published at ENUCOMP 2017
Abstract. This paper presents a security analysis of the USB plug-and-play configuration protocol with regards to human interface device emulation and keystroke injection attacks. We explore how an adversary can compromise confidentiality, integrity and availability of computer systems by exploiting a vulnerability of USB plug-and-play. We perform a set of experiments to measure the required time for successful injection of exploits into different operating systems. Our results show that human interface device emulation and keystroke injection can cause significant damage and that current USB specifications are insufficient to protect against these threats.
profile
Reader and writer, with a special enthusiam for science fiction and horror stories.
Computer engineer and software developer in my spare time.
skills
programming languages
Python
Javascript
C++
Java
web development
HTML
CSS
Javascript
Vue.js
Node.js
Nginx
databases
PostgreSQL
MongoDB
operating systems & hardware platforms
GNU/Linux
Android
Arduino
Raspberry Pi
libraries, packages & frameworks
Numpy
Scipy
Matplotlib
skimage
sklearn
NetworkX
OpenCV
Keras
PyTorch
Flask
Spacy
Express
Sequelize
Mocha
Socket.IO
projects
Neochess
The minimalistic chess server
I challenged myself to code a chess server in one week and neochess is the result. The core was written in a week, but some improvements are still being added. Neochess focuses on what really matters, the game itself. There are no accounts and usernames are auto-generated. Only players can access the game, but adding the possibility of watching games is something I'm planning to do in the future. The website was built using Vue.js, along with other free software tools. The server runs on Node.js and game data is stored at MongoDB Cloud. Real time synchronization between players is done with Socket.IO.
Aerial
Path planning from aerial images
The goal of this project is to provide additional support to path planning for autonomous ground vehicles. The idea is to map aerial images of an environment and define which terrain regions are suitable to be crossed by the vehicle. This decision is made using image processing and specialized heuristics. By working with aerial images, the coverage of planning increases significantly and this helps to optimize the process of autonomous navigation. This project is part of the undergraduate thesis for my Computer Engineering major at Federal University of Ceará in Brazil. It was developed in Python and published in the journal Expert Systems with Applications.
Turret
Access control using computer vision
This project was started with the purpose of monitoring movement of personnel in PET laboratory, but was also used at the PPGEEC research lab. I did most of the software design and implementation during my supervised internship at the Federal University of Ceará. Turret processes video input from a camera, identifies movement frames, performs face detection and records the moments in which people are passing through the entrances/exits. Besides, I implemented a chatbot module that answers to questions asked via Telegram by using natural language processing. For example, there is support for questions and commands like "Who was in the lab today?" or "Hi, Turret, send me the report for today". The code was written in Python and is available at Github.
Botkit
Natural language understanding to build chatbots
This project emerged from the need of extracting information from written messages and improve intent recognition of a chatbot's client. Botkit's NLU module brings together functionality from a couple of free software packages into a compact framework that can be trained to process text inputs and recognize language, sentiments, entities and intentions. The project was developed in Python and is available at Github. Botkit is used by Turret to provide support for its chatbot module.
Input: Who is David?
Output:
{
"entities": [
{
"confidence": 0.0,
"name": "David",
"start": 2,
"stop": 3,
"type": "person"
}
],
"intent": "who",
"intents": {
"greetings": 0.0,
"who": 2.0
},
"language": "en",
"sentiments": {
"compound": 0.0,
"negative": 0.0,
"neutral": 1.0,
"positive": 0.0
},
"text": "Who is David?",
"text_tagged": "Who is #person#?"
}
Input: Hello, Botkit :)
Output:
{
"entities": [
{
"confidence": 0.0,
"name": "Botkit",
"start": 2,
"stop": 3,
"type": "person"
}
],
"intent": "greetings",
"intents": {
"greetings": 0.75,
"who": 0.5
},
"language": "en",
"sentiments": {
"compound": 0.4588,
"negative": 0.0,
"neutral": 0.4,
"positive": 0.6
},
"text": "Hello, Botkit :)",
"text_tagged": "Hello, #person# :)"
}
Vince
A chatbot to speed up searches, answer questions and perform other useful tasks
Vince is a personal project developed to help me in searches and other diverse set of quick tasks. It is still a very early prototype, but its first version is capable of answering to some natural language queries, basic questions about the weather, term definitions, searches for songs and lyrics, among other little tasks. It was developed as a RESTful API, therefore, it can answer through multiple platforms simultaneously, but at the moment only the Telegram interface was implemented. The code was written in Python and stays for now in a private repository. Vince is an acronym for Virtual INtelligent Computer Entity.
Hydra
A remotely controlled mini robot rover
Hydra is a mini robot rover controlled by a Raspberry Pi Model B. It is a differential drive robot, equipped with one ultrasonic sensor, an inertial measurement unit model MPU6050, one RPi camera model v1 and a WiFi module for two-way communication with a companion computer, from which commands can be submitted. At the moment, Hydra is remotely controlled, but an autonomous navigation module is under development. There are also plans of implementing algorithms for object searching. This project is developed in partnership with my friend Márcio Albuquerque and was used in experiments published in Expert Systems with Applications.
Hydra at Github • Article at ESWADragão sem Chama
A website about programming, hacking and DIY
Dragão sem Chama is a project developed by my friends and me. The idea was to produce content about technology, programming, hacking and DIY. My main contribution was a series of tutorials on Android development with a focus on beginners, including topics such as Bluetooth usage, integration with Arduino and multithreading. Most of the content I wrote is in portuguese, so, unfortunately, if you're an english reader, it's likely that you will find it hard to read. But the feedback I received in the comments is quite positive, I assure you. Here are some links:
Programação Bluetooth no Android
Comunicação Bluetooth entre Android e Arduino
Android, Activities e como alternar entre várias telas
professional experience
05/2019 - Now
Mobile Application Tester
Freelance at Testlio, in partnership with Snapchat
I perform this occasional job when there is demand for manual testing in the Snapchat mobile app for Android, through the Testlio platform. The tests aim to isolate localization and functional bugs in the app. These bugs are reported directly to Snapchat's development and quality assurance teams. I'm part of a group with more than 150 testers distributed around the world, reaching 40 languages. The most challenging factor in this work is to keep the high standard of the bug reports, as required by Snapchat and reinforced by Testlio.
06/2017 - 06/2018
Machine Learning Developer & Chatbot Programmer
Internship at Elife
My job in this internship was to develop prototypes of software products based on machine learning and natural language processing. I implemented microservices for text and voice chatbots, data mining and text classification. One of the most relevant challenges was to develop a system to automatically suggest smart answers. This system was applied at the Buzzmonitor platform, one of the main products of Elife, focused on customer relationship management and used by many important brands in the economic scenario. Another challenge was the prototyping of voice chatbots to contact customers by phone. The machine learning models implemented in this internship were based mainly on convolutional and recurrent neural networks, implemented in Python, using libraries such as Keras, TFLearn and Tensorflow. Node.js was used to perform bug fixes and extend the functionality of the text chatbots that were already in use by the company.
05/2016 - 08/2016
Research Assistant & Programmer
Internship at Medical Imaging Research Group, Vancouver Coastal Health Research Institute
This internship was done during my exchange year in Canada. I worked with a group dedicated to research on medical imaging and associated to the University of British Columbia, with a lab at the Vancouver General Hospital. The focus of the group was the development of computed tomography technologies. My work was to implement a tool to convert raw tomographic data to the Interfile format, which could be processed and analyzed by the group using the software STIR. The raw data could be generated from GATE simulations or a real tomography machine. The main challenge here was to understand the raw tomographic data, which required a study of the physics behind the process and the engineering of the tomography devices. The second challenge was to grasp the documentation of Interfile and account for all the requirements of the format. The conversion software was implemented in Python.
03/2015 - 07/2015
Python Programmer
Internship at Federal University of Ceará - Sobral Campus
During this internship, I started the development of Turret, a monitoring and access control software for use in rooms and laboratories. The program uses a camera to register the entrance and exits of people. Using Python and OpenCV, I developed many functionalities such as movement detection, face detection and recognition, support for Google Drive backups and a GNOME GDK graphical interface. The first project, and also its current version, which was updated after the internship, are available at Github. The Turret was used by the Computer Engineering Program of Tutorial Education (PET) and later at the Computer & Electrical Engineering Graduate Program PPGEEC lab.
Turret v0 at Github (developed during the internship)
academic education
2018 - Now
MSc. Electrical & Computer Engineering
Federal University of Ceará - Sobral Campus
Area: Computer Vision
GPA: 3.7/4
2015 - 2016
Exchange. Faculty of Applied Science. Electrical & Computer Engineering
University of British Columbia - Vancouver Campus
Funded by CNPQ, Science Without Borders
2012 - 2018
research highlights
2019 - Now
Traversability Learning from Aerial Images with Fully Convolutional Neural Networks
Carlos David Braga Borges, Jarbas Joaci de Mesquita Sá Junior
Under review
Abstract. Traversability analysis is essential for ground robot operations because it allows the incorporation of knowledge about traversable and non-traversable terrains into the robot's planning algorithm. It is possible to use aerial data to compute traversability maps for large regions and use them to assist in ground robot navigation. Most published methods to generate these maps from aerial images use terrain classification or heuristics to determine traversability. However, methods based on classification or handcrafted heuristics exhibit limitations with regard to output quality and processing time. To improve these variables, this work explores a new method to compute a traversability map from an aerial image in one forward pass through a fully convolutional neural network. We show that this method can be employed to generate traversability maps in diverse environments and demonstrate that it provides useful information for a planner algorithm to compute safe paths.
2017 - 2019
A strategy and evaluation method for ground global path planning based on aerial images
Carlos David Braga Borges, Antonio Márcio Albuquerque Almeida, Iális Cavalcante Paula Júnior, Jarbas Joaci de Mesquita Sá Junior
Published at Expert Systems with Applications
Abstract. Autonomous robot navigation consists of establishing a sequence of actions that guarantee safe and efficient locomotion for a robotic system. This work focuses on outdoor ground robot navigation guided by aerial images. We propose a pipeline of image processing, traversability estimation, terrain representation and route planning capable of assessing whether a desired target location is reachable or not. We also propose a dataset and an evaluation method to quantify the average quality of generated paths and measure how well a planning strategy finds possible routes and rejects impossible ones. This evaluation was applied to identify a parameter combination that maximized path feasibility recognition and average path quality. Our results show that the proposed strategy identifies the correct action in 85.8% of the test cases and takes an average of 2.3 s for mapping and 100 ms for path planning over 300 × 300 m² areas in images of size 1000 × 1000 pixels. We successfully employed our proposed method in a small scale experiment to guide our Hydra v3 mini rover.
2017 - 2019
Static Hand Gesture Recognition Based on Convolutional Neural Networks
Raimundo F. Pinto, Carlos D. B. Borges, Antônio M. A. Almeida, Iális C. Paula
Published at Journal of Electrical and Computer Engineering
Abstract. This paper proposes a gesture recognition method using convolutional neural networks. The procedure involves the application of morphological filters, contour generation, polygonal approximation, and segmentation during preprocessing, in which they contribute to a better feature extraction. Training and testing are performed with different convolutional neural networks, compared with architectures known in the literature and with other known methodologies. All calculated metrics and convergence graphs obtained during training are analyzed and discussed to validate the robustness of the proposed method.
2017
Aerial Image Analysis for Estimation of Ground Traversal Difficulty in Robot Navigation
C. David B. Borges, A. Márcio A. Almeida, Iális C. de Paula
Published at WVC 2017
Abstract. The use of unmanned aerial vehicles (UAV) for aid in unmanned ground vehicle (UGV) navigation makes it possible to plan routes more efficiently. Aerial images contain information about the environment that would be hard to obtain from the surface. This can be exploited to provide ground robots with route instructions. Digital image processing and computer vision techniques can identify regions of interest for UGV traversal. This article brings forth the concept of traversal difficulty image (TDI) and proposes techniques for TDI computation, with images taken from UAVs as input. We analyze the performance of four techniques and our results show that at least three of them can consistently identify levels of traversal difficulty associated with regions in the input image.
2017
Keyblock: a software architecture to prevent keystroke injection attacks
C. David B. Borges, J. Rafael B. de Araujo, Robson L. de Couto, A. Márcio A. Almeida
Published at SBSeg 2017
Abstract. This work investigates a solution to mitigate the threat of keystroke injection attacks. Current defense mechanisms often require relatively expensive hardware and time consuming configuration. We describe and test the effectiveness of a software layer between USB input hardware and processes. Our software, Keyblock, intercepts events from newly connected devices and uses keystroke dynamics analysis to detect whether an attack is in course. By detecting and immediately disabling devices with anomalous typing patterns, Keyblock provides a software-only automatic solution to prevent keystroke injection.
2017
Time analysis of attacks to USB plug-and-play by human interface device emulation and keystroke injection
C. David B. Borges, J. Rafael B. de Araujo, Robson L. de Couto, A. Márcio A. Almeida
Published at ENUCOMP 2017
Abstract. This paper presents a security analysis of the USB plug-and-play configuration protocol with regards to human interface device emulation and keystroke injection attacks. We explore how an adversary can compromise confidentiality, integrity and availability of computer systems by exploiting a vulnerability of USB plug-and-play. We perform a set of experiments to measure the required time for successful injection of exploits into different operating systems. Our results show that human interface device emulation and keystroke injection can cause significant damage and that current USB specifications are insufficient to protect against these threats.