Summary of "09172021 Lawn Tractor Meeting"
High-level summary
Meeting about steering calibration, sensors, logging and debugging for an Ackermann lawn tractor using ROS (referred to in the transcript as “ross”), the TEB/temp planner, and custom low-level controllers. The discussion covered the steering-angle workflow, recommended calibration/measurement methods, mapping and controller practices, IMU/rotational-velocity usage, sensor/hardware changes, logging and post‑mortem tooling, and next steps.
Steering / planner → steering-angle workflow
- Conversion code maps five inputs to a steering angle (radians): forward velocity, rotational velocity, wheelbase, minimum turning radius, and wheelbase/turning-radius parameters.
- The planner (TEB/temp planner) can be configured to output a steering angle instead of a rotational-velocity command. That angle is passed in the second field of a modified
cmd_velmessage. - The low-level controller must:
- Interpret the second field of
cmd_velas a steering angle (radians). - Map that angle to the vehicle’s steering position sensor (A/D counts / encoder counts).
- Interpret the second field of
- Important planner parameter:
minimum_turning_radius. This constrains the maximum angle the planner will request. Tune it so the planner does not command beyond mechanical hard stops.
Calibration / measurement methods (recommended)
Use one or more of the following to find the hard-stop steering angle or verify the angle-to-sensor mapping:
-
Physical measurement
- Measure steering/wheel geometry directly to determine hard-stop angle (for example, ~45°).
-
Drive‑in‑circle measurement
- Crank steering to the hard stop, drive a steady circle, measure the circle diameter from
base_link. - Using the measured radius and wheelbase, compute the steering angle that produced that circle (use the same equations posted in the meeting).
- Crank steering to the hard stop, drive a steady circle, measure the circle diameter from
-
Use measured rotational velocity
- Measure rotational velocity while driving a circle (from differential wheel odometry, GPS, or IMU).
- Run that rotational velocity back through the conversion equations to compute the corresponding steering angle.
Mapping & controller recommendations
- Use the measured hard-stop angle as the scaling reference: map 0..max_angle (radians) → 0..A/D counts (steering sensor).
- Remove ad‑hoc scaling in the
cmd_velmultiplexer (mux). Pass the planner-produced angle straight through to the low-level controller with no conversion there. - Perform angle → sensor-count mapping only in the low-level controller.
- Joystick teleop currently outputs ±1 (arbitrary). Better approach:
- Add a small node that maps joystick ±1 → ±max_angle so the joystick spans the full physical steering range.
- Do not rely on example numeric outputs from simulator tuning (e.g., ±0.3 rad); those are simulator‑specific and not necessarily meaningful for the real vehicle.
Note: Simulator example numbers are arbitrary and can be misleading if applied directly to the physical vehicle.
IMU / rotational velocity
- IMU, GPS, or wheel odometry can supply rotational velocity used for verification and calibration.
- Rotational velocity from sensors is primarily for verification; angle-based control can operate without it if the angle measurements are trusted.
- Some IMUs (example: BNO055-like or “O80” referenced) provide relative rotational change but not absolute compass heading. Choose the sensor and message format appropriate to your needs (or use GPS/odometry where absolute heading is required).
Sensor & hardware work, logging, and debugging
- Added sensors and hardware:
- Second IMU and RTK GPS.
- Right-wheel speed sensor (3D-printed bracket) to derive odometry from wheel sensors alongside GPS.
- Current sensors: Pololu boards and larger 50 A sensors; later added a sensor for the steering servo as well.
- CAN bus between remote receiver and main microcontroller; USB-to-CAN adapter to publish CAN messages into ROS and record them in bag files.
- Remote control / reliability improvements:
- Replaced cheap plastic transmitter E‑stop switch with a higher-quality metal switch to improve reliability.
- Fixed “runaway” behavior (vehicle continued previous commands when receiver→MCU comms dropped) by adding CAN from remote receiver to the main MCU and adding logging.
- Main MCU logs received inputs to CSV so the full chain (receiver → CAN → main controller → actuators) is traceable.
- E‑stop circuit still cuts power via relay, but releasing e‑stop resumes previous commands. Suggested adding logic to set speed to zero when commands stop arriving.
- Power/current issues and mitigations:
- Observed blown fuse and large peak motor currents when driving on grass (peaks ~30–40 A; A/D clipping observed).
- Replaced fuses after measuring currents (examples: main fuse increased to 40 A, motor fuse 30 A).
- Logged current data to ROS bags for post‑mortem analysis.
- USB logging crashes were caused by power/current spikes coupling into USB. Fixed by routing power wiring so USB cables are not run parallel to heavy power leads.
- Experimented with 24 V vs 12 V supply — lowering voltage reduced peak currents.
- Larger current sensors required correction factors because their recommended scaling assumed 5 V but the system uses 3.3 V; applied computed scaling (approximately ×1.515) to align plots.
Logging & post‑mortem tooling
- Use ROS bag + CSV logging across CAN, IMUs, GPS, odometry, and current sensors for incident analysis (runaways, power events).
- Recommended workflow:
- Measure physical capabilities (angles, currents).
- Load parameters into the planner (
minimum_turning_radius,wheelbase, etc.). - Drive and record sensor outputs (IMU/GPS/wheel odom/current).
- Tune planner parameters based on recorded data and repeat verification.
Software housekeeping & user interface notes
- Remove unnecessary scaling in the
cmd_velmux; let the planner angle pass through unchanged and do mapping in the low-level controller. - Optionally add a scaling node between joystick teleop and
cmd_velto map joystick output to the physical angle range. - Avoid confusing assumptions based on simulator example values.
Video / content management
- Indexing of older steering videos is ongoing.
- Two remaining videos plus two audio‑only files need publishing; audio‑only files may require creating a dummy video track for YouTube.
Planned next steps / checklist
- Produce a step‑by‑step measurement and calibration guide:
- What to measure, how to compute the steering angle, and how to load it into parameters.
- Test the proposed mapping in the field: pass planner angle through, map at low level, and verify with circle tests plus IMU/GPS/wheel odometry.
- Finish indexing and uploading remaining steering videos.
References / components mentioned
- ROS (referred to as “ross”)
- TEB/temp planner
- IMUs: BNO055-like, “O80” (relative rotation devices)
- RTK GPS
- Adafruit LoRa/LaRa radios
- Teensy microcontroller
- CAN bus + USB-to-CAN adapter
- Cytron motor driver
- Pololu current sensors and larger 50 A current sensors
- 3D-printed wheel speed sensor bracket
Main speakers / sources
- Jeff — primary presenter and narrator of experiments, hardware changes, and logic
- Al — participant asking clarifying questions and confirming details
- Other referenced people/sources: Matt (developer whose simulator tuning produced ±0.3 example values), ROS/TEB planner docs and community, Adafruit, Pololu
Category
Technology
Share this summary
Is the summary off?
If you think the summary is inaccurate, you can reprocess it with the latest model.