Робот-Тележка На Рос. Часть 6. Одометрия По Колесным Энкодерам, Карта Помещения, Лидар

Посты из серии: 8. Управляем с телефона - ROS Control, узел GPS 7. Локализация робота: gmapping, AMCL, ориентиры на карте помещения 6. Одометрия с помощью колесных энкодеров, карты помещения, лидара.

5. Работаем в рвизе и беседке: хакро, новые датчики.

4. Создайте симуляцию робота с помощью редакторов rviz и беседки.

3. Ускориться, сменить камеру, исправить походку 2. Программное обеспечение 1. Утюг В прошлый раз мы оформили проект в виде отдельных модулей xacro, добавив виртуальную видеокамеру и imu (гироскоп).

В этом посте мы будем работать с одометрией от оптических энкодеров, которые установлены на валах колес, загружать карту помещения и ездить по ней на настоящей тележке-роботе.



Одометрия и tf

Что такое одометрия и тф и как они обычно реализуются в ROS, уже хорошо описано на ресурсе, поэтому теоретическую часть отсылаем к соответствующим статьям, например Здесь .

Начиная с теоретической основы, давайте поработаем с практикой.

Начнем с работы над тележкой-роботом, подключившись к ней через VNC. Зайдем в папку rosbots_driver и создадим файловый узел.

Этот файл будет генерировать одометрию, получая ее от оптических энкодеров, которые, в свою очередь, отправляют ее в Arduino Uno, а затем в Raspberry Pi.

  
   

cd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver touch diff-tf.py

Поместим код в файл: diff_tf.py

#!/usr/bin/env python """ diff_tf.py - follows the output of a wheel encoder and creates tf and odometry messages. some code borrowed from the arbotix diff_controller script A good reference: http://rossum.sourceforge.net/papers/DiffSteer/ Copyright (C) 2012 Jon Stephan. """ import rospy #import roslib #roslib.load_manifest('differential_drive') from math import sin, cos, pi from geometry_msgs.msg import Quaternion from geometry_msgs.msg import Twist from geometry_msgs.msg import Vector3 from nav_msgs.msg import Odometry import tf from tf.broadcaster import TransformBroadcaster from std_msgs.msg import Int16, Int32, Int64, UInt32 ############################################################################# class DiffTf: ############################################################################# ############################################################################# def __init__(self): ############################################################################# rospy.init_node("diff_tf") self.nodename = rospy.get_name() rospy.loginfo("-I- %s started" % self.nodename) #### parameters #######

Теги: #Сделай сам или Сделай сам #Разработка Raspberry Pi #Разработка робототехники #Робототехника #лидар #Робототехника своими руками #одометрия #рвиз
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.