Files
ros-raspbot-v2/ansible/setup_robot.yml
T
m5p3nc3r c6d02bbe43 Ensure ros controller doesn't timeout on cmd_vel
The ros controller will timeout if it doesn't receive a cmd_vel message
in a given period, stopping the wheels.
webui sends messages at 100ms intervals, so the update rate needs to be 10Hz
This may need to be reviewed when using other input systems.
2026-05-27 23:10:20 +00:00

65 lines
1.8 KiB
YAML

---
- name: Setup robot
hosts: raspbot
become: true
vars:
docker_users:
- "{{ robot_user }}"
pre_tasks:
- name: Enable SPI via raspi-config
command: raspi-config nonint do_spi 0
changed_when: false
# Real-time scheduling setup per
# https://control.ros.org/kilted/doc/ros2_control/controller_manager/doc/userdoc.html#determinism
- name: Create realtime group
group:
name: realtime
state: present
- name: Add robot user to realtime group
user:
name: "{{ robot_user }}"
groups: realtime
append: true
- name: Configure real-time scheduling limits
copy:
dest: /etc/security/limits.d/99-realtime.conf
content: |
@realtime soft rtprio 99
@realtime soft priority 99
@realtime soft memlock unlimited
@realtime hard rtprio 99
@realtime hard priority 99
@realtime hard memlock unlimited
owner: root
group: root
mode: '0644'
# - name: Install low-latency kernel for improved RT performance
# apt:
# name: linux-lowlatency
# state: present
# update_cache: true
# I2C Fast Mode (400 kHz) reduces SSD1306 OLED frame transfers from ~95 ms
# to ~24 ms, shrinking the window in which the kernel I2C adapter lock blocks
# motor writes on the shared /dev/i2c-1 bus.
- name: Set I2C bus speed to 400 kHz
lineinfile:
path: /boot/firmware/config.txt
regexp: '^dtparam=i2c_arm_baudrate='
line: 'dtparam=i2c_arm_baudrate=400000'
notify: Reboot required
handlers:
- name: Reboot required
debug:
msg: "config.txt updated — reboot the Pi to apply I2C speed change"
roles:
- geerlingguy.docker