Чугунный Дятел писал(а):У нас такой тест правильности одометрии:
1. Открываем rviz,
2. Включаем рисование лазерного дальномера
3. В качестве базового фрейма ставим /odom
4. Едем в пределах метра.
При этом точки дальномера должны оставаться более менее неподвижными (в пределах погрешности одометрии). Лазерный дальномер можно заменить на kinect/xtion и смотреть на облако точек вместо скана, но суть та же: точки не должны убегать.
спасибо, сканер есть, как его запущу проверю.
пока я пытаюсь понять совпадает ли плоскость в которой я рассчитываю одометрию с base_link.
на заметку, в rviz оси выделены цветом но не подписаны (например фрейм base_link)
red base_link.x (положительное напрвление вперёд относительно робота)
green base_link.y (положительное направление влево относительно робота)
blue base_link.z (положительное направление вверх относительно робота)
если я всё правильно понял,проверить можно так:
если при движении (линейная скорость 0.02 угловая 0) робот движется своей осью base_link.x (red), относительно фрейма /odom, вдоль оси odom.x (red),то оси x, в которой рассчитывается одометрия и base_link совпадают
если при движении (линейная скорость 0.0 угловая 0.2) робот вращается против часовой стрелки, относительно фрейма /odom, то оси y совпадают
Добавлено спустя 2 часа 49 минут 6 секунд:Re: Самодельный робот на базе ROS - Custom mobile robot with ROSура, наконец то робот приехал в точку назначения.
как я и предполагал были перепутаны направления осей, проверял по инструкции выше.
было,
1) при движении вперёд направление движения указывала ось y (зелёная), должна быть x
2) при положительной угловой скорости вращение было по часовой стрелке,должно быть наоборот.
меняем синусы косинусы местами, плюс на минус, и стало как положено.
Добавил 3D модель робота.
Добавлено спустя 2 часа 26 минут 39 секунд:Re: Самодельный робот на базе ROS - Custom mobile robot with ROSНа данный момент выполнены следующие шаги:
1) создана прошивка для контроллера
которая получает сообщение cmd_vel от rosmaster и публикует на нём сообщения tf (95 байт) и odometry (715 байт)
заданные скорости поддерживаются пид алгоритмом.
одометрия рассчитывается по сигналам с энкодеров
связь с мастером по uart (протокол rosserial) (500000 бод), частота сообщений 20Гц (занята треть полосы пропускания)
2) со стороны мастера (marsboard a20) запускается нода
rosserial_python/serial_node.py
и не стандартный модуль
http://wiki.ros.org/move_base_simpleон создаёт сообщения cmd_vel и направляет робота к заданной точке назначения (точку назначения публикует rviz).
ланч файл.
- Код: Выделить всё • Развернуть
<launch>
<node pkg="rosserial_python" type="serial_node.py" name="my_serial" args=" ">
<param name="~port" value="/dev/ttyS2" />
<param name="~baud" value="500000" />
</node>
<node pkg="move_base_simple" type="move_base_simple" name="move_base_simple"/>
</launch>
3) на ноутбуке
в .bash_rc
есть запись
ROS_MASTER_URI=http://kr1:11311
которая всегда указывает на мастера, связь с мастером по wifi
на ноутбуке запускаются ноды
joint_state_publisher,robot_state_publisher и rviz