Crazy Car NG, Running Linux
The Mission
The FH Joanneum bachelor studies Electronics and Computer Engineering has a class Embedded Computing (1 and 2), in semester 4 and 5. During this class we want to learn
C++
Linux hardware interfaces
Linux realtime
Some Python
… and more
Also on FH Joanneum, there is a fun contest, Crazy Car - RC cars racing against each other, autonomously. FH Joanneum is one of the competitors, and as such has hardware (a car). Traditionally, that car has been equipped with bare metal software (class Embedded Systems, semester 3).
In search for something to play with in Embedded Computing 2, we chose
to have fun with the car’s next generation hardware
(schematics and print)
and a Raspberry Pi.
Goal: Create Toolcase
Create Linux implementations for the hardware devices that are found on a car. These implementations should be usable from many possible architectures, including the reference architecture below, but also from more static architectures.
Goal: Create Reference Architecture
Given a working toolcase that we can use code out of, a reference architecture is implemented.
Project Tracking
Further Information
Crazy Car NG Schematics:
Schematic_and_print_CrazyCar.pdf
Documentation
How to write and build documentation
Todo List
(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/fh-stece2022/checkouts/latest/Documentation/toolcase/motor.rst, line 22.)
Todo
Motor
Note that the SysFS_Motor class does not expose how the motor
control works - it shouldn’t. Rather, it has only one method,
set_speed(percentage_of_max_speed).
Depending on the parameter’s value, IOs and PWM are tuned
accordingly. Give examples (here in Sphinx/RST, not in code/doxygen) so the user
can understand how set_speed() is implemented in terms of
SysFS_Motor’s forward, backward and speed ctor
params.
(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/fh-stece2022/checkouts/latest/Documentation/toolcase/motor.rst, line 33.)
Todo
Motor
How about pulling the brake? How would that work? What’s the difference between a hard brake and
set_speed(0)?Overcurrent detection? How would one make use of an ADC to implement this?
(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/fh-stece2022/checkouts/latest/Documentation/toolcase/motor.rst, line 55.)
(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/fh-stece2022/checkouts/latest/Documentation/toolcase/sensor-bno055.rst, line 46.)
(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/fh-stece2022/checkouts/latest/Documentation/toolcase/sensor-vl53l1x.rst, line 50.)
Todo
Servo
Link to this document: Background: PWM vs. PPM, And Servos
Explain how PPM and PWM relate (in Sphinx/RST): the servo interprets its input as PPM, but the servo class generates PWM output. Or so.
Give links
Link to servo datasheet
(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/fh-stece2022/checkouts/latest/Documentation/toolcase/servo.rst, line 16.)
(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/fh-stece2022/checkouts/latest/Documentation/toolcase/servo.rst, line 30.)