Посты из серии: 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.
Поместим код в файл: diff_tf.pycd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver touch 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 #Разработка робототехники #Робототехника #лидар #Робототехника своими руками #одометрия #рвиз
-
Лян Цичао
19 Oct, 24 -
Эгоизм
19 Oct, 24 -
Избавимся От Старой Электроники Выгодно
19 Oct, 24