Параметры и настройка через launch
После включения робота, происходит загрузка системы и автоматический запуск всех необходимых для работы робота нод. Управление нодами, которые будут загружены, возможно через лаунч-файл
/etc/ros/turtlebro.d/turtlebro.launch
По умолчанию запускаются следующие ноды:
/arduino_serial_node
/republish_raw
/robot_state_publisher
/rosapi
/rosbridge_websocket
/rosout
/rplidarNode
/simple_odom
/stm_serial_node
/uvc_camera_node
/web_telemetry_node
/web_video_server
/webserver
Работают топики:
/bat
/client_count
/cmd_vel
/connected_clients
/diagnostics
/front_camera/camera_info
/front_camera/image_raw
/front_camera/image_raw/compressed
/imu
/joint_states
/odom
/odom_pose2d
/raw_odom
/republish_raw/compressed/parameter_descriptions /republish_raw/compressed/parameter_updates
/rosout
/rosout_agg
/scan
/tf
/tf_static
/web_tele
Запущены сервисы:
/arduino_serial_node/get_loggers /arduino_serial_node/set_logger_level /board_info /power/off /power/reset /republish_raw/compressed/set_parameters /republish_raw/get_loggers /republish_raw/set_logger_level /reset /robot_state_publisher/get_loggers /robot_state_publisher/set_logger_level /rosapi/action_servers /rosapi/delete_param /rosapi/get_loggers /rosapi/get_param /rosapi/get_param_names /rosapi/get_time /rosapi/has_param /rosapi/message_details /rosapi/node_details /rosapi/nodes /rosapi/publishers /rosapi/search_param /rosapi/service_host /rosapi/service_node /rosapi/service_providers /rosapi/service_request_details /rosapi/service_response_details /rosapi/service_type /rosapi/services /rosapi/services_for_type /rosapi/set_logger_level /rosapi/set_param /rosapi/subscribers /rosapi/topic_type /rosapi/topics /rosapi/topics_and_raw_types /rosapi/topics_for_type /rosbridge_websocket/get_loggers /rosbridge_websocket/set_logger_level /rosout/get_loggers /rosout/set_logger_level /rplidarNode/get_loggers /rplidarNode/set_logger_level /set_camera_info /set_pid /simple_odom/get_loggers /simple_odom/set_logger_level /start_motor /stm_serial_node/get_loggers /stm_serial_node/set_logger_level /stop_motor /uvc_camera_node/get_loggers /uvc_camera_node/set_logger_level /web_telemetry_node/get_loggers /web_telemetry_node/set_logger_level /web_video_server/get_loggers /web_video_server/set_logger_level /webserver/get_loggers /webserver/set_logger_level
Файл
/home/pi/.ros_params
содержит параметры окружения для старта ROS:export ROS_HOSTNAME=$machine_ip
export ROS_IP=$machine_ip
export ROS_MASTER_URI=http://$machine_ip:11311
export ROVER_MODEL=turtlebro
export ROVER_WHEEL_PARAM=12280
Переменная окружения ROVER_WHEEL_PARAM определяет параметр wheel_param для определения типа моторов. Для старых моторов применяется значение: 22500; для новых моторов: 12280. Если одометрия робота из топика не совпадает с реальным перемещением робота, необходимо провести калибровку параметра.
Для того, чтобы одометрия точно отображала реальное перемещение робота используются два параметра:
- stm_serial_node/wheel_distance double
- тип данных - числовой 64-битный тип
- размерность - метры
- обозначает - расстояние между колесами
- stm_serial_node/wheel_param uint32_t
- тип данных - числовой 32-битовый без знака
- размерность - безразмерный
- обозначает- число тиков энкодера на метр. Является расчётным коэффициентом.
Для расчёта параметра wheel_param используется следующая формула:
wheel_param = ticks*red_ratio/circle
ticks - количество тиков энкодера на один оборот мотора без учёта редуктора, штук
red_ratio - коэффициент передачи редуктора, безразмерный
circle - длина окружности колеса, метров
Пример рассчета для текущих моторов:
red_ratio=56
circle=pi * D(диаметр колеса)=3,14 * 0,065=0,2041
ticks=ticks_per_wheel_rotation(кол-во тиков на 1 оборот колеса)/red_ratio=2506/56=44,75
wheel_param = 44,75 * 56/0,2041 = ~12278
Установка параметра wheel_distance возмо жна в launch-файле
rosserial.launch
в пакете turtlebro: sudo nano ~/catkin_ws/src/turtlebro/launch/rosserial.launch
==============
<param name="wheel_distance" type="double" value="0.185"/>
Также в лаунч-файле
rosserial.launch
есть возможность задачи параметра wheel_param:<param name="wheel_param" value="$(optenv ROVER_WHEEL_PARAM 22500)"/>
но как можно заметить, значение данного параметра берется из переменной окружения операционной системы, а конкретнее задается в файле
.ros_params
:После изменения параметров необходимо выполнить на роботе команду синхронизации данных:
sudo sync
и путем выключения/включения тумблера питания перезагрузить всего робота.
В случае, когда пользователь не установил никаких параметров, происходит загрузка платы TurtleBoard с параметрами по умолчанию, которые обеспечивают работу идущих в комплекте с роботом моторов и колес. Процедура обновления параметров нужна только в том случае, когда плата TurtleBoard настраивается для работы с нестандартным шасси.
Загруженные параметры не сохраняются в постоянную память контроллера, поэтому при установке неправильных параметров необходимо произвести перезапуск устройства, чтобы загрузить значения по умолчанию.
Для настройки коэффици ентов ПИД регулятора можно использовать сервис ros
/set_pid
rosservice call /set_pid "Ki: 0.0 Kp: 0.0 Kd: 0.0"
Главный файл конфигурации -- подключает другие .launch файлы и глобальные настройки.
<arg name="run_rosserial" default="true"/>
<arg name="run_rplidar" default="true"/>
<arg name="run_turtlebro_web" default="true"/>
<arg name="run_camera_ros" default="true"/>
<arg name="run_simple_odom" default="true"/>
run_rosserial
-- запуск rosserial.launch для соединения с Arduino и STM МК
run_rplidar
-- запустить получение данные с RPLidar
run_turtlebro_web
-- запуск веб-интерфейса робота
run_camera_ros
-- включить камеру через пакет uvc_camera
run_simple_odom
-- подключить паблишер приведенной одометрии. Топик /odom_pose2d
Файл запуска нод
stm_serial_node
и arduino_serial_node
необходимых для работы с Arduino и STMПодключается через устройство, скорость 460800 бод/с
/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0012-if00-port0
Подключается через устройст во, скорость 115200 бод/с
/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0010-if00-port0
Файл для запуска ноды обработки данных с лидара. Для работы необходим пакет
rplidar
от производителя лидара. Параметры файла настроены для работы с лидаром RPLidar A1 на скорости 115200 бод/с через устройство /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0011-if00-port0
Данные с лидара вычисляются относительно фрейма
base_scan
Файл для запуска издателя с данными полученными из фронтальной камеры. Подробнее о работе с камерой