Identificação da orientação do rosto do usuário e o seu ângulo em relação à câmera. O algoritmo utiliza a biblioteca dlib em conjunto com openCV para detectar pontos de referência na face em uma imagem. Os pontos utilizados são: 18, 22, 23, 27, 37, 40, 43, 46, 32, 36, 49, 55, 58, 9.
Os testes foram realizados utilizando a câmera c295e da Logitech.
Para que o algoritmo seja executado com sucesso, é necessário instalar a biblioteca dlib (tutorial dlib) e o opencv2.
pip install opencv-python
É necessário também fazer o download do pacote usb_cam para ROS kinetic.
O repositório é dividido em:
- config: diretório onde se encontra o arquivo com alguns parâmetros que podem ser modificados.
- launch: neste diretório estão três arquivos .launch.
- face_orientation: Utilizado quando o nó do usb_cam já está sendo executado e executa apenas o algoritmo de orientação da face.
- usb_cam_and_face_orientation: Primeiro ele executa o usb_cam e depois o algoritmo de orientação da face.
- usb_cam_node: Executa apenas o nó do usb_cam.
- scripts: O script em python responsável pelo reconhecimento da orientação da face.
Após esse comando (ou alguma combinação dos arquivos ".launch" ja mencionados),
roslaunch face_orientation usb_cam_and_face_orientation.launch
O tópico pos_head_topic, message type String, é publicado com a orientação do rosto e o ângulo em relação à câmera.
Nas imagens abaixo, é possível ver os pontos de referência da imagem, a orientação da face e o ângulo.
Ao utilizar este pacote, é necessário citar o trabalho abaixo. Os repositórios formation_control, face_orientation e leg_monitoring são baseados no artigo A novel multimodal cognitive interaction for walker-assisted rehabilitation therapies.
@inproceedings{scheidegger2019novel, title={A novel multimodal cognitive interaction for walker-assisted rehabilitation therapies}, author={Scheidegger, Wandercleyson M and de Mello, Ricardo C and Jimenez, Mario F and M{'u}nera, Marcela C and Cifuentes, Carlos A and Frizera-Neto, Anselmo and others}, booktitle={2019 IEEE 16th International Conference on Rehabilitation Robotics (ICORR)}, pages={905--910}, year={2019}, organization={IEEE} }