move RTPS to dedicated px4fmu-v{3,4,4pro,5}, posix, sdflight builds (#8113)

This commit is contained in:
Daniel Agar 2017-10-17 16:29:55 -04:00 committed by GitHub
parent 979d092628
commit d83073f016
24 changed files with 260 additions and 292 deletions

2
.gitmodules vendored
View File

@ -35,7 +35,7 @@
path = src/drivers/gps/devices
url = https://github.com/PX4/GpsDrivers.git
[submodule "src/lib/micro-CDR"]
path = src/lib/micro-CDR
path = src/modules/micrortps_bridge/micro-CDR
url = https://github.com/eProsima/micro-CDR.git
[submodule "platforms/nuttx/NuttX/nuttx"]
path = platforms/nuttx/NuttX/nuttx

View File

@ -355,22 +355,6 @@ include_directories(${include_dirs})
link_directories(${link_dirs})
add_definitions(${definitions})
#=============================================================================
# RTPS and micro-cdr
#
find_program(FASTRTPSGEN fastrtpsgen PATHS $ENV{FASTRTPSGEN_DIR})
if (FASTRTPSGEN AND (config_rtps_send_topics OR config_rtps_receive_topics))
option(GENERATE_RTPS_BRIDGE "enable RTPS and microCDR" ON)
endif()
if (GENERATE_RTPS_BRIDGE)
# add micro-CDR
message(STATUS "RTPS bridge enabled, send: ${config_rtps_send_topics} receive: ${config_rtps_receive_topics}")
px4_add_git_submodule(TARGET git_micro_cdr PATH src/lib/micro-CDR)
add_subdirectory(src/lib/micro-CDR EXCLUDE_FROM_ALL)
endif()
#=============================================================================
# message, and airframe generation
#

View File

@ -159,21 +159,25 @@ all_nuttx_targets: $(NUTTX_CONFIG_TARGETS)
posix: posix_sitl_default
broadcast: posix_sitl_broadcast
# All targets with just dependencies but no recipe must either be marked as phony (or have the special @: as recipe).
.PHONY: all posix broadcast all_nuttx_targets
# Multi- config targets.
eagle_default: posix_eagle_default qurt_eagle_default
eagle_rtps: posix_eagle_rtps qurt_eagle_default
eagle_legacy_default: posix_eagle_legacy qurt_eagle_legacy
excelsior_default: posix_excelsior_default qurt_excelsior_default
excelsior_rtps: posix_excelsior_rtps qurt_excelsior_default
excelsior_legacy_default: posix_excelsior_legacy qurt_excelsior_legacy
# All targets with just dependencies but no recipe must either be marked as phony (or have the special @: as recipe).
.PHONY: all posix broadcast eagle_default eagle_legacy_default excelsior_legacy_default excelsior_default all_nuttx_targets
.PHONY: eagle_default eagle_rtps eagle_legacy_default
.PHONY: excelsior_default excelsior_rtps excelsior_legacy_default
# Other targets
# --------------------------------------------------------------------
.PHONY: qgc_firmware px4fmu_firmware misc_qgc_extra_firmware alt_firmware
.PHONY: sizes check quick_check
.PHONY: sizes check quick_check check_rtps
# QGroundControl flashable NuttX firmware
qgc_firmware: px4fmu_firmware misc_qgc_extra_firmware sizes
@ -209,6 +213,14 @@ alt_firmware: \
check_s2740vc-v1_default \
sizes
# builds with RTPS
check_rtps: \
check_px4fmu-v3_rtps \
check_px4fmu-v4_rtps \
check_px4fmu-v4pro_rtps \
check_posix_sitl_rtps \
sizes
sizes:
@-find build -name *.elf -type f | xargs size 2> /dev/null || :

View File

@ -14,9 +14,8 @@ exec find src \
-path src/lib/DriverFramework -prune -o \
-path src/lib/ecl -prune -o \
-path src/lib/matrix -prune -o \
-path src/lib/micro-CDR -prune -o \
-path src/modules/commander -prune -o \
-path src/modules/micrortps_bridge/micrortps_agent -prune -o \
-path src/modules/micrortps_bridge/micro-CDR -prune -o \
-path src/modules/sdlog2 -prune -o \
-path src/modules/systemlib/uthash -prune -o \
-path src/modules/uavcan/libuavcan -prune -o \

View File

@ -41,7 +41,6 @@ include(common/px4_base)
# utility functions
#
# * px4_add_git_submodule
# * px4_create_git_hash_header
#
#=============================================================================
@ -71,13 +70,13 @@ function(px4_add_git_submodule)
string(REPLACE "/" "_" NAME ${PATH})
add_custom_command(OUTPUT ${PX4_BINARY_DIR}/git_init_${NAME}.stamp
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/git_init_${NAME}.stamp
COMMAND bash ${PX4_SOURCE_DIR}/Tools/check_submodules.sh ${PATH}
COMMAND cmake -E touch ${PX4_BINARY_DIR}/git_init_${NAME}.stamp
COMMAND cmake -E touch ${CMAKE_CURRENT_BINARY_DIR}/git_init_${NAME}.stamp
DEPENDS ${PX4_SOURCE_DIR}/.gitmodules ${PATH}/.git
WORKING_DIRECTORY ${PX4_SOURCE_DIR}
COMMENT "git submodule ${PATH}"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(${TARGET} DEPENDS ${PX4_BINARY_DIR}/git_init_${NAME}.stamp)
add_custom_target(${TARGET} DEPENDS git_init_${NAME}.stamp)
endfunction()

View File

@ -134,9 +134,6 @@ set(config_module_list
modules/uORB
modules/dataman
# micro RTPS
modules/micrortps_bridge/micrortps_client
#
# Libraries
#
@ -198,11 +195,3 @@ set(config_module_list
# EKF
#examples/ekf_att_pos_estimator
)
set(config_rtps_send_topics
sensor_combined
)
set(config_rtps_receive_topics
sensor_baro
)

View File

@ -143,10 +143,6 @@ set(config_module_list
modules/uORB
modules/dataman
# micro RTPS
modules/micrortps_bridge/micrortps_client
#
# Libraries
#
@ -215,12 +211,3 @@ set(config_module_list
# EKF
examples/ekf_att_pos_estimator
)
set(config_rtps_send_topics
sensor_combined
)
set(config_rtps_receive_topics
sensor_baro
)

View File

@ -138,9 +138,6 @@ set(config_module_list
modules/systemlib/mixer
modules/uORB
# micro RTPS
modules/micrortps_bridge/micrortps_client
#
# Libraries
#
@ -208,11 +205,3 @@ set(config_module_list
# EKF
examples/ekf_att_pos_estimator
)
set(config_rtps_send_topics
sensor_combined
)
set(config_rtps_receive_topics
sensor_baro
)

View File

@ -0,0 +1,5 @@
include(configs/nuttx_px4fmu-v3_default)
list(APPEND config_module_list
modules/micrortps_bridge
)

View File

@ -139,9 +139,6 @@ set(config_module_list
modules/uORB
modules/dataman
# micro RTPS
modules/micrortps_bridge/micrortps_client
#
# Libraries
#
@ -210,11 +207,3 @@ set(config_module_list
# EKF
examples/ekf_att_pos_estimator
)
set(config_rtps_send_topics
sensor_combined
)
set(config_rtps_receive_topics
sensor_baro
)

View File

@ -0,0 +1,5 @@
include(configs/nuttx_px4fmu-v4_default)
list(APPEND config_module_list
modules/micrortps_bridge
)

View File

@ -139,9 +139,6 @@ set(config_module_list
modules/systemlib/mixer
modules/uORB
# micro RTPS
modules/micrortps_bridge/micrortps_client
#
# Libraries
#
@ -209,11 +206,3 @@ set(config_module_list
# EKF
#examples/ekf_att_pos_estimator
)
set(config_rtps_send_topics
sensor_combined
)
set(config_rtps_receive_topics
sensor_baro
)

View File

@ -0,0 +1,5 @@
include(configs/nuttx_px4fmu-v4pro_default)
list(APPEND config_module_list
modules/micrortps_bridge
)

View File

@ -139,9 +139,6 @@ set(config_module_list
modules/systemlib/mixer
modules/uORB
# micro RTPS
modules/micrortps_bridge/micrortps_client
#
# Libraries
#
@ -210,11 +207,3 @@ set(config_module_list
# EKF
#examples/ekf_att_pos_estimator
)
set(config_rtps_send_topics
sensor_combined
)
set(config_rtps_receive_topics
sensor_baro
)

View File

@ -0,0 +1,5 @@
include(configs/nuttx_px4fmu-v4_default)
list(APPEND config_module_list
modules/micrortps_bridge
)

View File

@ -66,9 +66,6 @@ set(config_module_list
modules/commander
modules/navigator
# micro RTPS
modules/micrortps_bridge/micrortps_client
lib/controllib
lib/mathlib
lib/mathlib/math/filter
@ -87,11 +84,3 @@ set(config_module_list
platforms/posix/px4_layer
platforms/posix/work_queue
)
set(config_rtps_send_topics
sensor_baro
)
set(config_rtps_receive_topics
sensor_combined
)

View File

@ -58,9 +58,6 @@ set(config_module_list
modules/commander
modules/navigator
# micro RTPS
modules/micrortps_bridge/micrortps_client
lib/controllib
lib/mathlib
lib/mathlib/math/filter

View File

@ -0,0 +1,5 @@
include(configs/posix_sdflight_default)
list(APPEND config_module_list
modules/micrortps_bridge
)

View File

@ -114,9 +114,6 @@ set(config_module_list
modules/systemlib/mixer
modules/uORB
# micro RTPS
modules/micrortps_bridge/micrortps_client
#
# Libraries
#
@ -189,39 +186,18 @@ set(config_module_list
# EKF
examples/ekf_att_pos_estimator
# micro-RTPS
)
set(config_rtps_send_topics
sensor_baro
)
set(config_rtps_receive_topics
sensor_combined
)
# Default config_sitl_rcS_dir (posix_sitl_default), this is overwritten later
# for the config posix_sitl_efk2 and set again, explicitly, for posix_sitl_lpe,
# which are based on posix_sitl_default.
set(config_sitl_rcS_dir
posix-configs/SITL/init/ekf2
CACHE INTERNAL "init script dir for sitl"
)
set(config_sitl_rcS_dir posix-configs/SITL/init/ekf2 CACHE INTERNAL "init script dir for sitl")
set(config_sitl_viewer
jmavsim
CACHE STRING "viewer for sitl"
)
set_property(CACHE config_sitl_viewer
PROPERTY STRINGS "jmavsim;none")
set(config_sitl_viewer jmavsim CACHE STRING "viewer for sitl")
set_property(CACHE config_sitl_viewer PROPERTY STRINGS "jmavsim;none")
set(config_sitl_debugger
disable
CACHE STRING "debugger for sitl"
)
set_property(CACHE config_sitl_debugger
PROPERTY STRINGS "disable;gdb;lldb")
set(config_sitl_debugger disable CACHE STRING "debugger for sitl")
set_property(CACHE config_sitl_debugger PROPERTY STRINGS "disable;gdb;lldb")
# If the environment variable 'replay' is defined, we are building with replay
# support. In this case, we enable the orb publisher rules.

View File

@ -0,0 +1,5 @@
include(configs/posix_sitl_default)
list(APPEND config_module_list
modules/micrortps_bridge
)

View File

@ -177,76 +177,3 @@ add_custom_command(OUTPUT ${uorb_sources}
px4_add_library(uorb_msgs ${uorb_sources})
add_dependencies(uorb_msgs uorb_headers)
###############################################################################
# micro-cdr serialization
###############################################################################
# if RTPS is enabled generate serialization code for each uORB message
if (GENERATE_RTPS_BRIDGE)
set(msg_out_path_microcdr ${PX4_BINARY_DIR}/uORB_microcdr/topics)
set(msg_source_out_path_microcdr ${CMAKE_CURRENT_BINARY_DIR}/topics_microcdr_sources)
set(uorb_headers_microcdr)
set(uorb_sources_microcdr)
# send topic files
set(send_topic_files)
foreach(topic ${config_rtps_send_topics})
list(APPEND send_topic_files ${PX4_SOURCE_DIR}/msg/${topic}.msg)
list(APPEND uorb_headers_microcdr ${msg_out_path_microcdr}/${topic}.h)
list(APPEND uorb_sources_microcdr ${msg_source_out_path_microcdr}/${topic}.cpp)
endforeach()
# receive topic files
set(receive_topic_files)
foreach(topic ${config_rtps_receive_topics})
list(APPEND receive_topic_files ${PX4_SOURCE_DIR}/msg/${topic}.msg)
list(APPEND uorb_headers_microcdr ${msg_out_path_microcdr}/${topic}.h)
list(APPEND uorb_sources_microcdr ${msg_source_out_path_microcdr}/${topic}.cpp)
endforeach()
list(REMOVE_DUPLICATES uorb_headers_microcdr)
list(REMOVE_DUPLICATES uorb_sources_microcdr)
# Generate uORB serialization headers
add_custom_command(OUTPUT ${uorb_headers_microcdr}
COMMAND ${PYTHON_EXECUTABLE} tools/px_generate_uorb_topic_files.py
--headers
-f ${send_topic_files} ${receive_topic_files}
-i ${CMAKE_CURRENT_SOURCE_DIR}
-o ${msg_out_path_microcdr}
-e templates/uorb_microcdr
-t ${CMAKE_CURRENT_BINARY_DIR}/tmp/headers_microcdr
-q
DEPENDS ${msg_files}
COMMENT "Generating uORB microcdr topic headers"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
VERBATIM
)
add_custom_target(uorb_headers_microcdr DEPENDS ${uorb_headers_microcdr})
# Generate uORB serialization sources
add_custom_command(OUTPUT ${uorb_sources_microcdr}
COMMAND ${PYTHON_EXECUTABLE} tools/px_generate_uorb_topic_files.py
--sources
-f ${send_topic_files} ${receive_topic_files}
-i ${CMAKE_CURRENT_SOURCE_DIR}
-o ${msg_source_out_path_microcdr}
-e templates/uorb_microcdr
-t ${CMAKE_CURRENT_BINARY_DIR}/tmp/sources_microcdr
-q
DEPENDS ${msg_files}
COMMENT "Generating uORB microcdr topic sources"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
VERBATIM
)
px4_add_library(uorb_msgs_microcdr ${uorb_sources_microcdr})
add_dependencies(uorb_msgs_microcdr uorb_headers_microcdr uorb_headers)
# microCDR
target_include_directories(uorb_msgs_microcdr
PRIVATE ${PX4_SOURCE_DIR}/src/lib/micro-CDR/include
PRIVATE ${PX4_BINARY_DIR}/src/lib/micro-CDR/include/microcdr
)
endif()

View File

@ -0,0 +1,134 @@
############################################################################
#
# Copyright (c) 2017 PX4 Development Team. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name PX4 nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################
#=============================================================================
# RTPS and micro-cdr
#
find_program(FASTRTPSGEN fastrtpsgen PATHS $ENV{FASTRTPSGEN_DIR})
if(NOT FASTRTPSGEN)
message(FATAL_ERROR "Unable to find fastrtpsgen")
endif()
set(config_rtps_send_topics
sensor_combined
)
set(config_rtps_receive_topics
sensor_baro
)
if (FASTRTPSGEN AND (config_rtps_send_topics OR config_rtps_receive_topics))
option(GENERATE_RTPS_BRIDGE "enable RTPS and microCDR" ON)
endif()
if (GENERATE_RTPS_BRIDGE)
add_subdirectory(micrortps_client)
###############################################################################
# micro-cdr serialization
###############################################################################
include(common/px4_git)
px4_add_git_submodule(TARGET git_micro_cdr PATH micro-CDR)
add_subdirectory(micro-CDR)
set(msg_out_path_microcdr ${PX4_BINARY_DIR}/uORB_microcdr/topics)
set(msg_source_out_path_microcdr ${CMAKE_CURRENT_BINARY_DIR}/topics_microcdr_sources)
set(uorb_headers_microcdr)
set(uorb_sources_microcdr)
# send topic files
set(send_topic_files)
foreach(topic ${config_rtps_send_topics})
list(APPEND send_topic_files ${PX4_SOURCE_DIR}/msg/${topic}.msg)
list(APPEND uorb_headers_microcdr ${msg_out_path_microcdr}/${topic}.h)
list(APPEND uorb_sources_microcdr ${msg_source_out_path_microcdr}/${topic}.cpp)
endforeach()
# receive topic files
set(receive_topic_files)
foreach(topic ${config_rtps_receive_topics})
list(APPEND receive_topic_files ${PX4_SOURCE_DIR}/msg/${topic}.msg)
list(APPEND uorb_headers_microcdr ${msg_out_path_microcdr}/${topic}.h)
list(APPEND uorb_sources_microcdr ${msg_source_out_path_microcdr}/${topic}.cpp)
endforeach()
list(REMOVE_DUPLICATES uorb_headers_microcdr)
list(REMOVE_DUPLICATES uorb_sources_microcdr)
# Generate uORB serialization headers
add_custom_command(OUTPUT ${uorb_headers_microcdr}
COMMAND ${PYTHON_EXECUTABLE} tools/px_generate_uorb_topic_files.py
--headers
-f ${send_topic_files} ${receive_topic_files}
-i .
-o ${msg_out_path_microcdr}
-e templates/uorb_microcdr
-t ${CMAKE_CURRENT_BINARY_DIR}/tmp/headers_microcdr
-q
DEPENDS ${msg_files}
COMMENT "Generating uORB microcdr topic headers"
WORKING_DIRECTORY ${PX4_SOURCE_DIR}/msg/
VERBATIM
)
add_custom_target(uorb_headers_microcdr DEPENDS ${uorb_headers_microcdr})
# Generate uORB serialization sources
add_custom_command(OUTPUT ${uorb_sources_microcdr}
COMMAND ${PYTHON_EXECUTABLE} tools/px_generate_uorb_topic_files.py
--sources
-f ${send_topic_files} ${receive_topic_files}
-i .
-o ${msg_source_out_path_microcdr}
-e templates/uorb_microcdr
-t ${CMAKE_CURRENT_BINARY_DIR}/tmp/sources_microcdr
-q
DEPENDS ${msg_files}
COMMENT "Generating uORB microcdr topic sources"
WORKING_DIRECTORY ${PX4_SOURCE_DIR}/msg/
VERBATIM
)
px4_add_library(uorb_msgs_microcdr ${uorb_sources_microcdr})
add_dependencies(uorb_msgs_microcdr uorb_headers_microcdr uorb_headers git_micro_cdr lib__micro-CDR)
target_link_libraries(uorb_msgs_microcdr PRIVATE lib__micro-CDR)
# microCDR
target_include_directories(uorb_msgs_microcdr
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/micro-CDR/include
${CMAKE_CURRENT_BINARY_DIR}/micro-CDR/include/microcdr
)
endif()

View File

@ -31,16 +31,6 @@
#
############################################################################
if(GENERATE_RTPS_BRIDGE)
find_program(FASTRTPSGEN fastrtpsgen PATHS $ENV{FASTRTPSGEN_DIR})
if(NOT FASTRTPSGEN)
message(STATUS "WARNING: Unable to find fastrtpsgen. Building PX4 without RTPS bridge support")
return()
endif()
# Do not delete everything in the current dir
set(msg_out_path ${CMAKE_CURRENT_BINARY_DIR})
if (NOT "${config_rtps_send_topics}" STREQUAL "" OR NOT "${config_rtps_receive_topics}" STREQUAL "")
@ -111,6 +101,5 @@ if(GENERATE_RTPS_BRIDGE)
topic_bridge_files
uorb_headers_microcdr
)
target_link_libraries(modules__micrortps_bridge__micrortps_client PRIVATE lib__micro-CDR)
endif()
target_link_libraries(modules__micrortps_bridge__micrortps_client PRIVATE uorb_msgs_microcdr)
endif()