Мы установили Ubilinux и ROS на нашу плату Intel Edison. Теперь будем изучать некоторые возможности, которые нам предоставляет этота самая Роботическая Операционная Система. Сегодня познакомимся с модулем воспроизведения звука. Так как на борту нашей платы нет звуковой карты, придётся подключать её по USB. Я приобрёл следующее устройство: New Sienoc USB 2.0 Virtual 7.1 Channel Xear 3D External USB Sound Card всего за 65 рублей. Система отображает эту карту с под названием C-Media Electronics, Inc. CM108 Audio Controller:
Команда dmesg выдаёт нам следующее:
Сразу же добавим наш аккаунт в группу audio для облегчения доступа и перелогинимся:
1 |
sudo addgroup duferob audio sudo logout |
Введём команду
1 |
aplay -l |
Видим наше устройство под номером 1. Попробуем воспроизвести тестовый файл:
1 |
sudo aplay -D plughw:1,0 /usr/share/sounds/alsa/Front_Center.wav |
Можно и радио послушать:
1 |
sudo apt-get install mpg123 mpg123 http://158.69.103.119:8000 |
Слышим звук, значит можно назначить нашу карту по умолчанию. Открываем файл настроек:
1 |
sudo nano /usr/share/alsa/alsa.conf |
Находим строчки:
1 |
defaults.ctl.card 1 defaults.pcm.card 1 |
И ставим вместо нулей единицы. Сохраняем и выходим. Заходим в также в следующий файл настроек:
1 |
sudo nano /etc/modprobe.d/alsa-base.conf |
Находим строку:
1 |
#options snd-usb-audio index=-2 |
и менеяем на
1 |
options snd-usb-audio index=0 |
Для работы в системе ROS нам потребуется также сервер JACK: К сожалению простая установка через apt-get модуля jackd. Не позволит нам его запустить корректно, так как для интерфейса ALSA потребуется dbus, который нам не доступен без X11 графической системы. Её у нас естественно нет. Ну не нужна она нам. Ну что ж, качаем исходники и компилируем jack server, указывая компилятору, что dbus не нужен. Всё кажется просто. Только предварительно придётся установить компилятор gcc, поддерживающий стандарт c++14. Изменим на время наш список источников реозиториев:
1 |
sudo nano /etc/apt/sources.list |
Меняем wheezy (jessie) на stretch везде.
1 |
sudo update sudo apt-get install gcc-6 g++-6 |
Не забываем вернуть репозитории в норму:
1 |
sudo nano /etc/apt/sources.list |
Меняем stretch на то, что было.
1 |
sudo update |
Устанавливаем компилятор по умолчанию:
1 |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 50 |
Теперь можно смело компилировать jackd:
1 |
cd /usr/local/src sudo git clone git://github.com/jackaudio/jack2.git cd jack2 sudo ./waf configure --alsa --prefix=/usr/local --libdir=/usr/lib/i386-linux-gnu sudo ./waf sudo ./waf install |
Проверим, без ошибок ли всё запускается:
1 |
jackd -r -dalsa -dhw:1,0 -r44100 |
Если всё нормально, то можно приступить к созданию пространства catkin:
1 2 3 4 |
mkdir -p ~/catkin_snd/src cd ~/catkin_snd/src git clone https://github.com/ros-drivers/audio_common cd .. catkin_make |
Не забудьте также установить голосовой генератор.