We welcome contributions from the community and are happy to have them. Please follow this guide when logging issues or making changes.
TODO: should we encourage more packages, or keep the current structure?
- Add TODO when a minor code smell is found, e.g. a hard-coded number that should be a parameter. (You are then welcome to fix them and propose the fixes in a pull request!).
- Add docstrings to the code. To ease the setup in VSCode you can use the
Python Docstring Generator
extension (https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring). - Add comments expecially for the parts of the code that are not straightforward, or to explain why a certain approach was chosen.
- In Python, use type-hinting for the parameters and the return values of the functions, when it's not obvious (e.g. init function and callback functions).
- remove all commented code! Also unused imports and variables should be removed.
- use a global parameter from the context list below to specify the context in which the node is running instead of hard-coding it. If a new context is needed, open a PR to add it to the list.
- Context list:
/sim
: the node is running in the simulator (ifFalse
, the node is running on the car)/measure
: the node is running with additional measurements/from_bag
: the node is running from a rosbag/racecar_version
: the node is assuming the racecar to be <racecar_version>
- Use ROS logging functions to log messages, with the default logging level set to
INFO
.
An example is in the planner/spliner/src/spliner_node.py
file.
- document the arguments of the launch file with the
doc
attribute of thearg
tag where reasonabele (e.g. when the arguments are limited to a set of few values) - keep formatting consistent, by using the VSCode plugin for
XML
(https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml)
Make sure the readme of a package/core node is up to date and contains the following sections:
- Description
- Parameters
- Input/Output Topic Signature
An example is in the planner/spliner/README.md
file.