See https://github.com/AndreyMinin/MobileRobots
Является ROS пакетом, предназначенным для разработки системы управления мобильным роботом.
Использует модель робота в симуляторе GAZEBO (www.gazebosim.org) либо модель робота в симуляторе Stage
cart_launch - проект с описанием сцены для Gazebo с картом и объектами сцены
- cart_launch/stage_worlds - описание сцены для stage
- cart_launch/launch/cart_launch - файл запуска модели в среде gazebo
- cart_launch/cart_stage.launch - файл для запуска модели в среде stage
场景,主要用 Gazebo
polaris_ranger_ev - проект, содержащий модель робота с датчиками для Gazebo
- model/simple_cart.sdf - робот без датчиков,
- model/scan_cart.sdf - робот с плоским дальномером и камерой
带传感器的机器人模型,cart_launch/launch/cart_launch 会从导入这里的模型
vehicle_ros_plugin - плагин для Gazebo, позволяющий управлять моделью из ROS.
- robot/velocity - топик для задания скорости движения
- robot/steering - топик для задания кривизны траектории (поворот руля)
- robot/odom - топик с текущими данными одометрии от робота
控制器插件,这个控制器是作者自己写的 实现了 ROS 和 GZ 的消息互传
stage_controller - модуль управления моделью робота в stage, преобразует команды управления поворотом руля (топик /steering), команды управления акселератором в команды управления моделью в stage (cmd_vel)
stage 中的控制器,用不到
simple_controller - простейший ROS контроллер, управляющий движением карта по овальной траектории, с помощью пид регулятора, в качестве ошибки используется расстояние от траектории, вычисляемое на основе абсолютного положения робота. Модуль управляет поворотом руля карта
轨迹跟踪
odo2tf - модуль преобразования данных о реальном положении модели робота (Odometry) в сообщения tf для формирования преобразования систем координат world->base_link Пописывается на топики:
- /odo - топик с данными одометрии ([nav_msgs/Odometry]) Публикует преобразование tf
里程计转 tf
laser2d_map - модуль построения карты препятствий по данным сканирующего двумерного дальномера Подписывается на топик
- /laser_scan - данные сканирующего дальномера (sensor_msgs/LaserScan)
- /tf - преобразование СК от лазера до world Публикует
- laser_map - карта препятствий в системе координат world
2d 建图
Установка
Необходимо, чтобы были установлены ROS (Тестировалось на melodic) и Gazebo (для управления моделью в Gazebo) или Stage (для управления моделью в среде stage), а также некоторые пакеты ROS (про которые будет указано внутри заданий)
Возможна разработка из докер образа, где всё необходимое уже установлено.
- Нужно склонировать репозиторий:
git clone https://github.com/AndreyMinin/MobileRobots.git <папка для размещения проекта>
- Перейти в рабочую папку
cd ros_ws
- собрать проект
catkin_make
или воспользоваться скриптом build.sh (из папки src)
./build.sh
Если сборка прошла без ошибок можно переходить к запуску
Для первого запуска может потребоваться выход в интернет- чтобы закачать некторые модели с репозитария Gazebo
- запуск команды выполняются из директории рабочей области (ros_ws) инициализация рабочей области ROS
source devel/setup.bash
- запуск модели в среде Gazebo и контроллера
roslaunch simple_controller controller.launch
модель стартует, затем запускаетя интерфейс gzclient, rviz и rqt Либо запуск модели в среде stage(предпочтительный вариант) и контроллера
roslaunch simple_controller controller_stage.launch
модель стартует, затем запускаетя интерфейс rqt
В rqt в плагине publish можно отправить сообщение с заданной скоростью в топик /robot/velocity
Должно появиться окно симулятора (GAZEBO либо stage), в котором робот ездит в некоторой сцене, отрабатывая заданную траекторию г) управление скоростью можно осуществлять с помощью rqt (publish_message) публикуя сообщение со значением скорости в топик /robot/velocity
Также можно осуществить запуск с помощью скрипта start.sh, находящегося в папке src
./start.sh
Остановить проект можно с помощью ctrl-C в консоли
实现了轨迹跟踪,横向控制
实现了速度伺服,纵向控制
MPC 控制,用多多项式拟合当前路径,输入 MPC 求解器计算最优控制,控制量为加速度和转向角速度
轨迹规划
建图
基于特征的定位
扩展卡尔曼滤波器 SLAM