diff --git a/.gitlab-industrial-ci-kinetic-no-rosinstall.yml b/.gitlab-industrial-ci-kinetic-no-rosinstall.yml
index 866a9c7a0ff2ec72d2232d22ea08f9bad7d9f5af..b64a68a55cc88378df6656e1c32b9c318407ae9a 100644
--- a/.gitlab-industrial-ci-kinetic-no-rosinstall.yml
+++ b/.gitlab-industrial-ci-kinetic-no-rosinstall.yml
@@ -75,6 +75,22 @@ industrial_ci_kinetic_deploy:
   only:
     - tags
 
+clang_format:
+  stage: postcheck
+  before_script:
+    - apk add --update bash coreutils tar wget
+    - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci.git .ci_config -b legacy
+    - wget https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/clang-format -O .clang-format
+  script: .ci_config/gitlab.sh
+  variables:
+    ROS_DISTRO: kinetic
+    CLANG_FORMAT_CHECK: file
+    CLANG_FORMAT_VERSION: "3.8"
+  when: always
+  tags:
+    - docker
+  allow_failure: yes
+
 ##########################################################
 ## Simple check for basic Python syntax errors; this is much less thorough than
 ## other options like pylint, but much faster and less strict
diff --git a/.gitlab-industrial-ci-kinetic-with-rosinstall.yml b/.gitlab-industrial-ci-kinetic-with-rosinstall.yml
index 288675fc99aac8d454185a062a94b69665609021..c095ae7182b423b5c0e54c856bccc6d5d6e1cc83 100644
--- a/.gitlab-industrial-ci-kinetic-with-rosinstall.yml
+++ b/.gitlab-industrial-ci-kinetic-with-rosinstall.yml
@@ -77,6 +77,22 @@ industrial_ci_kinetic_deploy:
   only:
     - tags
 
+clang_format:
+  stage: postcheck
+  before_script:
+    - apk add --update bash coreutils tar wget
+    - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci.git .ci_config -b legacy
+    - wget https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/clang-format -O .clang-format
+  script: .ci_config/gitlab.sh
+  variables:
+    ROS_DISTRO: kinetic
+    CLANG_FORMAT_CHECK: file
+    CLANG_FORMAT_VERSION: "3.8"
+  when: always
+  tags:
+    - docker
+  allow_failure: yes
+
 ##########################################################
 ## Simple check for basic Python syntax errors; this is much less thorough than
 ## other options like pylint, but much faster and less strict
diff --git a/clang-format b/clang-format
new file mode 100644
index 0000000000000000000000000000000000000000..ebcd8ad9c7a85c5f0ac781a0992bc23f17702f4d
--- /dev/null
+++ b/clang-format
@@ -0,0 +1,67 @@
+---
+# Format file from: https://github.com/davetcoleman/roscpp_code_format (bfa4ea78b4ac856da07458c8824bf5eb327ea693)
+BasedOnStyle: Google
+AccessModifierOffset: -2
+ConstructorInitializerIndentWidth: 2
+AlignEscapedNewlinesLeft: false
+AlignTrailingComments: true
+AllowAllParametersOfDeclarationOnNextLine: false
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: None
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakTemplateDeclarations: true
+AlwaysBreakBeforeMultilineStrings: false
+BreakBeforeBinaryOperators: false
+BreakBeforeTernaryOperators: false
+BreakConstructorInitializersBeforeComma: true
+BinPackParameters: true
+ColumnLimit: 120
+ConstructorInitializerAllOnOneLineOrOnePerLine: true
+DerivePointerBinding: false
+PointerBindsToType: true
+ExperimentalAutoDetectBinPacking: false
+IndentCaseLabels: true
+MaxEmptyLinesToKeep: 1
+NamespaceIndentation: None
+ObjCSpaceBeforeProtocolList: true
+PenaltyBreakBeforeFirstCallParameter: 19
+PenaltyBreakComment: 60
+PenaltyBreakString: 1
+PenaltyBreakFirstLessLess: 1000
+PenaltyExcessCharacter: 1000
+PenaltyReturnTypeOnItsOwnLine: 90
+SpacesBeforeTrailingComments: 2
+Cpp11BracedListStyle: false
+Standard: Auto
+IndentWidth: 2
+TabWidth: 2
+UseTab: Never
+IndentFunctionDeclarationAfterType: false
+SpacesInParentheses: false
+SpacesInAngles: false
+SpaceInEmptyParentheses: false
+SpacesInCStyleCastParentheses: false
+SpaceAfterControlStatementKeyword: true
+SpaceBeforeAssignmentOperators: true
+ContinuationIndentWidth: 4
+SortIncludes: false
+SpaceAfterCStyleCast: false
+
+# Configure each individual brace in BraceWrapping
+BreakBeforeBraces: Custom
+
+# Control of individual brace wrapping cases
+BraceWrapping: {
+    AfterClass: 'true'
+    AfterControlStatement: 'true'
+    AfterEnum : 'true'
+    AfterFunction : 'true'
+    AfterNamespace : 'true'
+    AfterStruct : 'true'
+    AfterUnion : 'true'
+    BeforeCatch : 'true'
+    BeforeElse : 'true'
+    IndentBraces : 'false'
+}
+...