Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for ROS2 humble #47

Open
wants to merge 9 commits into
base: ros1-master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
*.user
.vscode/
.vscode/
build
install
log
174 changes: 53 additions & 121 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,153 +1,85 @@
cmake_minimum_required(VERSION 3.0.2)
cmake_minimum_required(VERSION 3.5)
project(ira_laser_tools)
add_compile_options(-std=c++14)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS laser_geometry roscpp sensor_msgs std_msgs tf dynamic_reconfigure pcl_ros)

# Default to C99
set(CMAKE_C_STANDARD 99)

if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
endif()

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()

find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rclcpp_action REQUIRED)
find_package(rclcpp_lifecycle REQUIRED)
find_package(std_msgs REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(laser_geometry REQUIRED)
find_package(tf2 REQUIRED)
find_package(tf2_ros REQUIRED)
find_package(pcl_ros REQUIRED)
find_package(Eigen3 REQUIRED)

find_package(PCL REQUIRED)

set(dependencies
rclcpp
rclcpp_action
rclcpp_lifecycle
std_msgs
geometry_msgs
sensor_msgs
laser_geometry
tf2
tf2_ros
pcl_ros
Eigen3
PCL
)


# bugfix for g++-Warning
# "<command-line>:0:0: warning: missing whitespace after the macro name"
remove_definitions(-DDISABLE_LIBUSB-1.0)

generate_dynamic_reconfigure_options(cfg/laserscan_multi_merger.cfg cfg/laserscan_virtualizer.cfg)


## System dependencies are found with CMake's conventions
# find_package(Boost REQUIRED COMPONENTS system)


## Uncomment this if the package has a setup.py. This macro ensures
## modules and global scripts declared therein get installed
## See http://ros.org/doc/groovy/api/catkin/html/user_guide/setup_dot_py.html
# catkin_python_setup()

#######################################
## Declare ROS messages and services ##
#######################################

## Generate messages in the 'msg' folder
# add_message_files(
# FILES
# Message1.msg
# Message2.msg
# )

## Generate services in the 'srv' folder
# add_service_files(
# FILES
# Service1.srv
# Service2.srv
# )

## Generate added messages and services with any dependencies listed here
# generate_messages(
# DEPENDENCIES
# sensor_msgs# std_msgs
# )

###################################
## catkin specific configuration ##
###################################
## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(
INCLUDE_DIRS
# LIBRARIES laser_merger
# CATKIN_DEPENDS laser_geometry roscpp sensor_msgs std_msgs tf
# DEPENDS system_lib
)

###########
## Build ##
###########

## Specify additional locations of header files
## Your package locations should be listed before other locations
include_directories(include
${catkin_INCLUDE_DIRS}
${EIGEN_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
)

#add_definitions(${EIGEN_DEFINITIONS})

## Declare a cpp library
# add_library(laser_merger
# src/${PROJECT_NAME}/laser_merger.cpp
# )

## Declare a cpp executable
#add_executable(laser_merger_node src/laser_merger_node.cpp)
#target_link_libraries(laser_merger_node ${catkin_LIBRARIES})

add_executable(laserscan_multi_merger src/laserscan_multi_merger.cpp)
target_link_libraries(laserscan_multi_merger ${catkin_LIBRARIES} ${PCL_LIBRARIES})

## Add cmake target dependencies of the executable/library
## as an example, message headers may need to be generated before nodes
add_dependencies(laserscan_multi_merger ${PROJECT_NAME}_gencfg)
ament_target_dependencies(laserscan_multi_merger ${dependencies})
target_include_directories(laserscan_multi_merger PUBLIC ${EIGEN_INCLUDE_DIRS})
target_include_directories(laserscan_multi_merger PUBLIC ${PCL_INCLUDE_DIRS})
target_link_libraries(laserscan_multi_merger ${PCL_LIBRARIES})

add_executable(laserscan_virtualizer src/laserscan_virtualizer.cpp)
target_link_libraries(laserscan_virtualizer ${catkin_LIBRARIES} ${PCL_LIBRARIES})

## Add cmake target dependencies of the executable/library
## as an example, message headers may need to be generated before nodes
add_dependencies(laserscan_virtualizer ${PROJECT_NAME}_gencfg)

## Specify libraries to link a library or executable target against

ament_target_dependencies(laserscan_virtualizer ${dependencies})
target_include_directories(laserscan_virtualizer PUBLIC ${EIGEN_INCLUDE_DIRS})
target_include_directories(laserscan_virtualizer PUBLIC ${PCL_INCLUDE_DIRS})
target_link_libraries(laserscan_virtualizer ${PCL_LIBRARIES})

#############
## Install ##
#############

# all install targets should use catkin DESTINATION variables
# See http://ros.org/doc/groovy/api/catkin/html/adv_user_guide/variables.html

## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination
# install(PROGRAMS
# scripts/my_python_script
# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )

## Mark executables and/or libraries for installation
install(TARGETS laserscan_multi_merger laserscan_virtualizer
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION lib/${PROJECT_NAME}
)

## Mark cpp header files for installation
# install(DIRECTORY include/${PROJECT_NAME}/
# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
# FILES_MATCHING PATTERN "*.h"
# PATTERN ".svn" EXCLUDE
# )

## Mark other files for installation (e.g. launch and bag files, etc.)
install(DIRECTORY launch/
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch
DESTINATION share/${PROJECT_NAME}/launch
)

#############
## Testing ##
#############

## Add gtest based cpp test target and link libraries
# catkin_add_gtest(${PROJECT_NAME}-test test/test_laser_merger.cpp)
# if(TARGET ${PROJECT_NAME}-test)
# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
# endif()

## Add folders to be run by python nosetests
# catkin_add_nosetests(test)
ament_export_dependencies(${dependencies})
ament_package()
17 changes: 0 additions & 17 deletions cfg/laserscan_multi_merger.cfg

This file was deleted.

17 changes: 0 additions & 17 deletions cfg/laserscan_virtualizer.cfg

This file was deleted.

23 changes: 12 additions & 11 deletions launch/laserscan_multi_merger.launch
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
<!-- DESCRITPION -->

<launch>
<node pkg="ira_laser_tools" name="laserscan_multi_merger" type="laserscan_multi_merger" output="screen">
<param name="destination_frame" value="cart_frame"/>
<param name="cloud_destination_topic" value="/merged_cloud"/>
<param name="scan_destination_topic" value="/scan_multi"/>
<param name="laserscan_topics" value ="/scansx /scandx" /> <!-- LIST OF THE LASER SCAN TOPICS TO SUBSCRIBE -->
<param name="angle_min" value="-2.0"/>
<param name="angle_max" value="2.0"/>
<param name="angle_increment" value="0.0058"/>
<param name="scan_time" value="0.0333333"/>
<param name="range_min" value="0.30"/>
<param name="range_max" value="50.0"/>
<node pkg="ira_laser_tools" name="laserscan_multi_merger" exec="laserscan_multi_merger" output="screen">
<param name="destination_frame" value="base_link"/>
<param name="cloud_destination_topic" value="/merged_cloud"/>
<param name="scan_destination_topic" value="/scan_multi"/>
<param name="laserscan_topics" value ="/scansx /scandx" />
<!-- LIST OF THE LASER SCAN TOPICS TO SUBSCRIBE -->
<param name="angle_min" value="-3.14"/>
<param name="angle_max" value="3.14"/>
<param name="angle_increment" value="0.00437"/>
<param name="scan_time" value="0.0"/>
<param name="range_min" value="0.1"/>
<param name="range_max" value="2.0"/>
</node>
</launch>
27 changes: 18 additions & 9 deletions launch/laserscan_virtualizer.launch
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
FROM: http://wiki.ros.org/tf#static_transform_publisher

<<static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms>>
Publish a static coordinate transform to tf using an x/y/z offset and yaw/pitch/roll. The period, in milliseconds, specifies how often to send a transform. 100ms (10hz) is a good value.
== OR ==
Publish a static coordinate transform to tf using an x/y/z offset and yaw/pitch/roll. The period, in milliseconds, specifies how often to send a transform. 100ms (10hz) is a good value. == OR ==
<<static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms>>
Publish a static coordinate transform to tf using an x/y/z offset and quaternion. The period, in milliseconds, specifies how often to send a transform. 100ms (10hz) is a good value.

Expand All @@ -13,13 +12,23 @@ Publish a static coordinate transform to tf using an x/y/z offset and quaternion

<!-- DEFINE HERE THE STATIC TRANFORMS, FROM BASE_FRAME (COMMON REFERENCE FRAME) TO THE VIRTUAL LASER FRAMES-->
<!-- WARNING: the virtual laser frame(s) *must* match the virtual laser name(s) listed in param: output_laser_scan -->
<node pkg="tf" type="static_transform_publisher" name="ira_static_broadcaster1" args="0 0 0 0 0.3 0 laser_frame scansx 1000" />
<node pkg="tf" type="static_transform_publisher" name="ira_static_broadcaster2" args="0 0 0 0 0.0 0 laser_frame scandx 1000" />
<node pkg="tf2_ros" exec="static_transform_publisher" name="ira_static_broadcaster1" args="--yaw 0.3 --frame-id base_link --child-frame-id scansx" />
<node pkg="tf2_ros" exec="static_transform_publisher" name="ira_static_broadcaster2" args="--frame-id base_link --child-frame-id scandx" />

<node pkg="ira_laser_tools" name="laserscan_virtualizer" type="laserscan_virtualizer" output="screen">
<param name="cloud_topic" value="/cloud_in"/> <!-- INPUT POINT CLOUD -->
<param name="base_frame" value="/laser_frame"/> <!-- REFERENCE FRAME WHICH LASER(s) ARE RELATED-->
<param name="output_laser_topic" value ="/scan" /> <!-- VIRTUAL LASER OUTPUT TOPIC, LEAVE VALUE EMPTY TO PUBLISH ON THE VIRTUAL LASER NAMES (param: output_laser_scan) -->
<param name="virtual_laser_scan" value ="scansx scandx" /> <!-- LIST OF THE VIRTUAL LASER SCANS. YOU MUST PROVIDE THE STATIC TRANSFORMS TO TF, SEE ABOVE -->
<node pkg="ira_laser_tools" name="laserscan_virtualizer" exec="laserscan_virtualizer" output="screen">
<!-- INPUT POINT CLOUD -->
<param name="cloud_topic" value="/trunk4_camera_depth_camera/points"/>
<!-- REFERENCE FRAME WHICH LASER(s) ARE RELATED-->
<param name="base_frame" value="base_link"/>
<!-- VIRTUAL LASER OUTPUT TOPIC, LEAVE VALUE EMPTY TO PUBLISH ON THE VIRTUAL LASER NAMES (param: output_laser_scan) -->
<param name="output_laser_topic" value ="/scan" />
<!-- LIST OF THE VIRTUAL LASER SCANS. YOU MUST PROVIDE THE STATIC TRANSFORMS TO TF, SEE ABOVE -->
<param name="virtual_laser_scan" value ="scansx scandx" />
<param name="angle_min" value="-3.14"/>
<param name="angle_max" value="3.14"/>
<param name="angle_increment" value="0.00437"/>
<param name="scan_time" value="0.0"/>
<param name="range_min" value="0.1"/>
<param name="range_max" value="2.0"/>
</node>
</launch>
42 changes: 21 additions & 21 deletions package.xml
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
<?xml version="1.0"?>
<package>
<package format="3">
<name>ira_laser_tools</name>
<version>1.0.7</version>
<version>2.0.7</version>
<description>The ira_laser_tools package. These nodes are meant to provide some utils for lasers, like listen to different laser scan sources and merge them in a single scan or generate virtual laser scans from a pointcloud.</description>

<url>http://www.ros.org/wiki/ira_laser_tools</url>
<maintainer email="[email protected]">Augusto</maintainer>
<maintainer email="[email protected]">Pietro</maintainer>
<maintainer email="[email protected]">Fabio</maintainer>

<license>BSD</license>

<buildtool_depend>catkin</buildtool_depend>
<build_depend>sensor_msgs</build_depend>
<build_depend>libpcl-all-dev</build_depend>
<build_depend>pcl_ros</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>tf</build_depend>
<build_depend>laser_geometry</build_depend>
<build_depend>roscpp</build_depend>
<run_depend>sensor_msgs</run_depend>
<run_depend>libpcl-all-dev</run_depend>
<run_depend>pcl_ros</run_depend>
<run_depend>std_msgs</run_depend>
<run_depend>tf</run_depend>
<run_depend>laser_geometry</run_depend>
<run_depend>roscpp</run_depend>
<buildtool_depend>ament_cmake</buildtool_depend>

<depend>sensor_msgs</depend>
<depend>libpcl-all-dev</depend>
<depend>pcl_ros</depend>
<depend>geometry_msgs</depend>
<depend>std_msgs</depend>
<depend>tf2</depend>
<depend>tf2_ros</depend>
<depend>laser_geometry</depend>
<depend>rclcpp</depend>
<depend>rclcpp_action</depend>
<depend>rclcpp_lifecycle</depend>
<!-- Needed to work around https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=894656 on Debian Stretch -->
<build_depend>libvtk-qt</build_depend>
<run_depend>libvtk-qt</run_depend>

<exec_depend>rosidl_default_runtime</exec_depend>

<export>
<build_type>ament_cmake</build_type>
</export>

</package>
Loading