project-aslan / Aslan

Open source self-driving software for low speed environments
Apache License 2.0
273 stars 69 forks source link

[Feature Request] Redesign Full stack with best practices guidelines #17

Closed AbdelrahmanBarghouth-StreetDrone closed 4 years ago

AbdelrahmanBarghouth-StreetDrone commented 4 years ago

Which module? Full Software Stack

Is it a solution suggestion to a problem? The current version of the code requires

Describe the feature you would like to be implemented Package Folder Structure: My suggestion for folder structure follows best practices from: 1- http://wiki.ros.org/DevelopersGuide. 2- http://wiki.ros.org/Packages. “include” folder: contains header files for all the nodes of the package “launch” folder: contains xml files of types .launch that is used in roslaunch commands to run node or multiple nodes. “test” folder: contains xml files of type .test or .launch to launch unit test of one or multiple nodes, also contains files for unit testing the package and its nodes. “src” folder: contains .cpp, or/and .c codes for nodes of the package. “Scripts” folder: contains .py codes for nodes of the package. “msg” folder: contains the custom messages that are defined in the package. “srv” folder: contains the custom services that are defined in the package. “README.md” file: contains overview of package, how to build it, how to run it, nodes inside the package, and other information regarding the package. “CMakeLists.txt” file: contains the package cmake instructions using for catkin to build package “package.xml” file: contains properties about the package such as the package name, version number, authors, maintainers, and dependencies on other catkin packages.

Coding standard of the packages: I recommend following best practices and coding guidelines from: 1- http://wiki.ros.org/CppStyleGuide 2- http://wiki.ros.org/PyStyleGuide 3- http://wiki.ros.org/ROS/Patterns/Conventions 4- http://wiki.ros.org/CommonProcedures I recommend designning the whole software stack to be consisting of namespaces, structs, classes with proper OOP design for high accuracy and efficiency, low power and memory consumption.