If you're working on a package that other people are working on / are using, please try to stick to the following guidelines:
“[btr] new feature for btr package”
If you want to introduce major interface changes through you code, make an announcement on the cram-developers mailing list
package.xml
Relevant documentation: Package.xml Ref
<build_depend>
only specify all the rosdep keys or ROS packages that your package requires at build-time, e.g. other ROS package sources, library headers. Whereas, <run_depend>
is for rosdep keys and ROS packages that your package needs at run-time, e.g. shared libraries, executables, Python modules, launch scripts. More documentation for this can be found here.<export><deprecated /></export>
to tag deprecated packages<url type=“bugtracker”>
and <url type=“repository”>
tagsmy-package-name.asd files
Lisp
my-awesome-lisp-variable
use
too many packages in your package.lisp
. Instead, specify package namespaces explicitly in your code, e.g. cl-transforms:x
instead of x
. That way code is more readable.cl-tf
if you actually want cl-transforms
. The difference is:cl-transforms
defines datatypes such as pose
and transform
and their utility functions, such as angle-between-quaternions
.cl-transforms-stamped
defines datatypes of pose-stamped
and transforms-stamped
. So once you need a frame header, use cl-transforms-stamped
.cl-tf
defines the transform listener library, so if you need to do lookup-transform
, use cl-tf
.cl-tf2
is the equivalent of cl-tf
only with an alternative implementation based on the buffer_server
from tf2_ros
package.Ros-related
my_awesome_ros_package
.CRAM is open source software licensed under the BSD licence. This means the code can be used by any third party without having to contribute anything back and having to mention the original authors. Our copyright notice is there to allow others to use our software without being afraid of being sued.
An example copyright notice can be found in the header of most *.lisp
files in CRAM.
Here are some guidelines on how to deal with the copyright notice of your code:
*.lisp
or *.asd
file or any other source code file, please add a copyright notice with your name and institution name.package.xml
file, make sure to simply put your name in the correct tag (e.g. <author>
).A contribution is considered substantial if:
A contribution is considered not substantial if:
This definition is, of course, not quantitative. If you are unsure, ask the current main maintainer of the software for an advice or look on the Internet for some inspiration, e.g., from the GNU project.
Testing your code is essential! CRAM is a huge framework with a thousands of lines of code, so we have to make sure that whatever bricks we put in our CRAM skyscraper, they are robust. A couple of fragile bricks and our whole building will collapse.
To aid with testing, consider adding unit tests to functions in your code that have math and to your main API functions. Take a look at the testing tutorial to get started on writing tests.
Todo: Some Lisp patterns and stuff would be nice, like tail recursive functions and optimization flags, making sure the functions have no side effects, etcetc…