0
$\begingroup$

Rosanswers logo

I have a publisher in a package publishing a custom message type custom_gps.msg of the following format

Header header
float64 latitude      #degree
float64 longitude     #degree
float32 altitude      #WGS 84 reference ellipsoid fused by barometer
uint16  visibleSatelliteNumber #number of visible satellites

The message is published as drone_sdk/custom_gps. I'm trying to subscribe to the message in another package using a callback. In my class, I declare the callback and I add the header file generated by ROS for the custom message type

#include <drone_sdk/custom_gps.h>

//Declare Class
void fused_gps_callback(const drone_sdk::custom_gps::ConstPtr& msg);

but when I try to implement the subscriber:

void FlightControl::fused_gps_callback(const drone_sdk::custom_gps::ConstPtr& msg)
{
   // collect data here
}

I get the following error:

error: ‘custom_gps’ in namespace ‘drone_sdk’ does not name a type
 void FlightControl::fused_gps_callback(const drone_sdk::custom_gps::ConstPtr& msg)

My publisher works fine and I can see an output on rostopic echo. Also in my CMakeLists file, I believe I've added the dependency

using the following line: add_dependencies(flight_planner drone_sdk_generate_messages_cpp)

Here's what my CMAKE file looks like:

cmake_minimum_required(VERSION 2.8.3)
project(dji_flight_planner)

## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)

## 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
  drone_sdk
  nav_msgs
  roscpp
  rospy
  std_msgs
  sensor_msgs
  geometry_msgs
)


find_package(DJIOSDK REQUIRED)
find_package(Eigen3 REQUIRED)

catkin_package(
   INCLUDE_DIRS include
  CATKIN_DEPENDS
        #message_runtime    
        geometry_msgs
        nav_msgs
        std_msgs    
)

## System dependencies are found with CMake's conventions
# find_package(Boost REQUIRED COMPONENTS system)
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
    
include_directories(
# include
  ${catkin_INCLUDE_DIRS}
  include ${EIGEN3_INCLUDE_DIR}
)            
add_executable(drone_flight_planner src/flight_control.cpp src/flight_planner.cpp src/mobile_comm.cpp src/PID.cpp)   

target_link_libraries(drone_flight_planner
        ${catkin_LIBRARIES}
        ${EIGEN_LIBRARIES}
    ${DJIOSDK_LIBRARIES}
        )

add_dependencies(drone_flight_planner drone_sdk_generate_messages_cpp)

target_link_libraries(drone_flight_planner
  ${catkin_LIBRARIES}
  ${DJIOSDK_LIBRARIES}
)

install(DIRECTORY launch
  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch
)

Unfortunately, I can't use NavSatFix due to the additional field visibleSatelliteNumber in the message. Can anyone kindly point out what I'm doing wrong here?


Originally posted by marinePhD on ROS Answers with karma: 40 on 2019-03-15

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

This seems to be fixed. I was adding #include <drone_sdk/customgps.h> instead of what I originally quoted in the question d'oh.


Originally posted by marinePhD with karma: 40 on 2019-03-15

This answer was ACCEPTED on the original site

Post score: 0

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.