ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

teddybouch's profile - activity

2023-07-17 10:15:09 -0500 received badge  Famous Question (source)
2023-05-03 05:44:26 -0500 received badge  Notable Question (source)
2023-05-03 05:44:26 -0500 received badge  Popular Question (source)
2023-04-26 12:42:19 -0500 asked a question Package already built in underlay workspace is the current workspace

Package already built in underlay workspace is the current workspace I'm trying to build a library with parsing function

2022-06-26 09:52:33 -0500 received badge  Famous Question (source)
2022-05-25 08:17:13 -0500 received badge  Notable Question (source)
2022-05-24 12:19:41 -0500 received badge  Popular Question (source)
2022-05-24 04:45:36 -0500 commented question Trouble Reading Back Array of Characters

I'm using DCCL to encode and decode protobufs, which outputs a string but in practice I've found will sometimes only pas

2022-05-23 23:08:52 -0500 asked a question Trouble Reading Back Array of Characters

Trouble Reading Back Array of Characters In order to accommodate an encoded string that might have a terminal character,

2022-05-09 01:26:48 -0500 received badge  Notable Question (source)
2022-05-08 14:02:56 -0500 commented answer Undefined Reference in Linking Using colcon

Thank you so much! Not only did this fix the immediate problem, but your explanation was excellent and helped me underst

2022-05-08 14:01:24 -0500 marked best answer Undefined Reference in Linking Using colcon

Background: I work in underwater robotics, and DCCL is a library for encoding of messages to fit within our extremely constrained message sizes based on an original protobuf format. Just for practice before applying this to one of our real messages, I'm modifying the basic publisher/subscriber from the tutorial to encode the message to DCCL before sending. It seems to do just fine with the protobuf library, but I'm getting an undefined reference error on the DCCL library, which I assuming is a linking error.

Error:

teddybouch@Norby:~/workspace/ros2_ws$ colcon build --packages-select cpp_pubsub
Starting >>> cpp_pubsub
--- stderr: cpp_pubsub                             
/usr/bin/ld: CMakeFiles/talker.dir/src/publisher_member_function.cpp.o: in function `MinimalPublisher::timer_callback()':
publisher_member_function.cpp:(.text._ZN16MinimalPublisher14timer_callbackEv[_ZN16MinimalPublisher14timer_callbackEv]+0xa2): undefined reference to `dccl::Codec::Codec(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: publisher_member_function.cpp:(.text._ZN16MinimalPublisher14timer_callbackEv[_ZN16MinimalPublisher14timer_callbackEv]+0xed): undefined reference to `testdccl::NavigationReport::NavigationReport()'
/usr/bin/ld: publisher_member_function.cpp:(.text._ZN16MinimalPublisher14timer_callbackEv[_ZN16MinimalPublisher14timer_callbackEv]+0x1d5): undefined reference to `dccl::Codec::encode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, google::protobuf::Message const&, bool, int)'
/usr/bin/ld: publisher_member_function.cpp:(.text._ZN16MinimalPublisher14timer_callbackEv[_ZN16MinimalPublisher14timer_callbackEv]+0x3b7): undefined reference to `testdccl::NavigationReport::~NavigationReport()'
/usr/bin/ld: publisher_member_function.cpp:(.text._ZN16MinimalPublisher14timer_callbackEv[_ZN16MinimalPublisher14timer_callbackEv]+0x3c6): undefined reference to `dccl::Codec::~Codec()'
/usr/bin/ld: publisher_member_function.cpp:(.text._ZN16MinimalPublisher14timer_callbackEv[_ZN16MinimalPublisher14timer_callbackEv]+0x48b): undefined reference to `testdccl::NavigationReport::~NavigationReport()'
/usr/bin/ld: publisher_member_function.cpp:(.text._ZN16MinimalPublisher14timer_callbackEv[_ZN16MinimalPublisher14timer_callbackEv]+0x4a3): undefined reference to `dccl::Codec::~Codec()'
/usr/bin/ld: CMakeFiles/talker.dir/src/publisher_member_function.cpp.o: in function `void dccl::Codec::load<testdccl::NavigationReport>()':
publisher_member_function.cpp:(.text._ZN4dccl5Codec4loadIN8testdccl16NavigationReportEEEvv[_ZN4dccl5Codec4loadIN8testdccl16NavigationReportEEEvv]+0x11): undefined reference to `testdccl::NavigationReport::descriptor()'
/usr/bin/ld: publisher_member_function.cpp:(.text._ZN4dccl5Codec4loadIN8testdccl16NavigationReportEEEvv[_ZN4dccl5Codec4loadIN8testdccl16NavigationReportEEEvv]+0x28): undefined reference to `dccl::Codec::load(google::protobuf::Descriptor const*, int)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/talker.dir/build.make:132: talker] Error 1
make[1]: *** [CMakeFiles/Makefile2:82: CMakeFiles/talker.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed   <<< cpp_pubsub [0.97s, exited with code 2]

Summary: 0 packages finished [1.16s]
  1 package failed: cpp_pubsub
  1 package had stderr output: cpp_pubsub

Except for the addition of the proto directory and the protobuf message definition file in it, I think that the only relevant changes are in the CMakeLists.txt and publisher_member_function.cpp, which I'm including below, but if I've missed something or anyone wants all the code for some reason, the whole package is on my Dropbox here.

CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)
project(cpp_pubsub)

# Default to C99
if(NOT CMAKE_C_STANDARD)
  set(CMAKE_C_STANDARD 99)
endif()

# Default to C++14
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 dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)
find_package(dccl REQUIRED)
message(STATUS "Using DCCL in ${DCCL_DIR}")
find_package(Protobuf REQUIRED)

if(NOT DEFINED DCCL_INCLUDE_DIR)
  #for DCCL 3.0.3 and newer
  get_target_property(DCCL_INCLUDE_DIR dccl INTERFACE_INCLUDE_DIRECTORIES)
endif()

if(DCCL_INCLUDE_DIR)
  message ...
(more)
2022-05-07 23:20:23 -0500 received badge  Popular Question (source)
2022-05-06 16:10:49 -0500 asked a question Undefined Reference in Linking Using colcon

Undefined Reference in Linking Using colcon Background: I work in underwater robotics, and DCCL is a library for encodin

2021-05-10 09:58:11 -0500 received badge  Famous Question (source)
2020-11-08 15:35:24 -0500 marked best answer Invalid Initialization of Parameter Adapter?

As an exercise to familiarize myself with ROS, I'm writing what is basically a waypoint driver for the turtlesim. The file that is now giving me trouble compiling is supposed to get waypoints using a service from a separate waypoint server, then use that to navigate the turtle using the Pose and Velocity publish/subscribe interfaces. The service has been tested and works, but it looks like something that I've implemented with regard to the Pose interface is not happy. The error that I'm getting is:

In file included from /opt/ros/fuerte/include/ros/subscription_callback_helper.h:35:0,                                                                                                                                                       
                 from /opt/ros/fuerte/include/ros/subscriber.h:33,
                 from /opt/ros/fuerte/include/ros/node_handle.h:33,
                 from /opt/ros/fuerte/include/ros/ros.h:45,
                 from /home/abouchard/ros_workspace/waypoint_follower/src/wp_driver.cpp:1:
/opt/ros/fuerte/include/ros/parameter_adapter.h: In static member function ‘static ros::ParameterAdapter<M>::Parameter ros::ParameterAdapter<M>::getParameter(const Event&) [with M = turtlesim::Pose_<std::allocator<void> >&, ros::ParameterAdapter<M>::Parameter = turtlesim::Pose_<std::allocator<void> >&, ros::ParameterAdapter<M>::Event = ros::MessageEvent<const turtlesim::Pose_<std::allocator<void> > >, typename boost::remove_reference<typename boost::remove_const<M>::type>::type = turtlesim::Pose_<std::allocator<void> >]’:
/opt/ros/fuerte/include/ros/subscription_callback_helper.h:180:5:   instantiated from ‘void ros::SubscriptionCallbackHelperT<P, Enabled>::call(ros::SubscriptionCallbackHelperCallParams&) [with P = turtlesim::Pose_<std::allocator<void> >&, Enabled = void]’
/home/abouchard/ros_workspace/waypoint_follower/src/wp_driver.cpp:133:1:   instantiated from here
/opt/ros/fuerte/include/ros/parameter_adapter.h:78:30: error: invalid initialization of reference of type ‘ros::ParameterAdapter<turtlesim::Pose_<std::allocator<void> >&>::Parameter {aka turtlesim::Pose_<std::allocator<void> >&}’ from expression of type ‘const turtlesim::Pose_<std::allocator<void> >’
/opt/ros/fuerte/include/ros/parameter_adapter.h:79:3: warning: control reaches end of non-void function [-Wreturn-type]

It looks like the invalid initialization is the problem, but the line called out is the last one in the program and only contains a close bracket.

I'm running openSUSE 12.1, and I have all my dependencies and everything else from the troubleshooting checklist squared away. I think that I set the ROS_BOOST_PATH variable correctly as well, but honestly I couldn't find good instructions for that, so I could be wrong. I'm happy to share my code, but it might be a lot for this format, so here is the line where I declare the subscriber;

ros::Subscriber sub = n.subscribe("pose", 1, updatePose);

and the related callback function:

void updatePose(turtlesim::Pose &msg)
{
    veh_x = msg.x;
    veh_y = msg.y;
    theta = msg.theta;
    cout << "Updated position: (" << veh_x << "," << veh_y <<") at heading " << theta << endl;
}

I went through all the tutorials without a problem, so I know that my system configuration will support a subscriber node. Any help would be greatly appreciated.

2020-09-01 08:17:43 -0500 received badge  Nice Answer (source)
2020-03-30 10:52:02 -0500 received badge  Notable Question (source)
2020-03-30 10:52:02 -0500 received badge  Popular Question (source)
2020-01-31 06:26:50 -0500 received badge  Self-Learner (source)
2020-01-31 06:25:43 -0500 received badge  Famous Question (source)
2019-11-21 13:39:05 -0500 commented question hector_mapping map issue

I'm having a similar issue - any resolution?

2019-11-21 09:31:49 -0500 commented question Unstable map on conversion of Turtlebot2 from gmapping to hector_slam

Okay - making progress. I ran another test just to see whether I could notice anything, and I realized that the local ma

2019-11-21 09:15:47 -0500 commented question Unstable map on conversion of Turtlebot2 from gmapping to hector_slam

After poking around some more, the issue seems to be the map->odom transformation being posted by hector_mapping. As

2019-11-21 06:41:19 -0500 received badge  Enthusiast
2019-11-20 15:16:39 -0500 asked a question Unstable map on conversion of Turtlebot2 from gmapping to hector_slam

Unstable map on conversion of Turtlebot2 from gmapping to hector_slam I have the basic Turtlebot tutorials (http://learn

2019-11-20 13:43:23 -0500 commented question Go from gmapping to hector_slam

For the record, I'm running into the same issue. Did you ever find a solution? I'm going to keep working on it and I'll

2019-10-10 07:26:59 -0500 commented question rocon interactions fails in pairing yaml objects

As an update, I've been able to figure out that the offending file is /turtlebot_bringup/interactions/admin.interactions

2019-10-10 06:33:32 -0500 received badge  Popular Question (source)
2019-10-09 13:15:13 -0500 asked a question rocon interactions fails in pairing yaml objects

rocon interactions fails in pairing yaml objects I'm trying to get an exploration behavior working on a Turtlebot with a

2019-08-06 02:06:28 -0500 received badge  Notable Question (source)
2019-07-31 06:55:47 -0500 marked best answer Trouble Building Messages: Invalid Declaration 'float32'

I'm trying to define a simple message for a larger suite of messages that just defines the limits of some attribute by containing a maximum and a minimum value. So I defined the following message as Limits.msg:

float32 minimum
float32 maximum

The CMakeLists.txt is very simple right now while I debug this issue:

cmake_minimum_required(VERSION 2.8.3)
project(test_msgs)

find_package(catkin REQUIRED
  COMPONENTS
    std_msgs
    message_generation
)

add_message_files(
  FILES
  Limits.msg
  GPSFix.msg
)

generate_messages(
  DEPENDENCIES
  std_msgs
)

catkin_package(
  CATKIN_DEPENDS
  std_msgs
)

I'm keeping GPSFix.msg in there because it's another simple message that builds just fine for some reason. In any case, if I catkin_make from the catkin workspace, I get this:

ava@3b97b310abf0:~/workspace/test_msgs$ catkin_make
Base path: /home/ava/workspace/test_msgs
Source space: /home/ava/workspace/test_msgs/src
Build space: /home/ava/workspace/test_msgs/build
Devel space: /home/ava/workspace/test_msgs/devel
Install space: /home/ava/workspace/test_msgs/install
####
#### Running command: "cmake /home/ava/workspace/test_msgs/src -DCATKIN_DEVEL_PREFIX=/home/ava/workspace/test_msgs/devel -DCMAKE_INSTALL_PREFIX=/home/ava/workspace/test_msgs/install -G Unix Makefiles" in "/home/ava/workspace/test_msgs/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/ava/workspace/test_msgs/devel
-- Using CMAKE_PREFIX_PATH: /home/ava/workspace/sci288ava/devel;/home/ava/workspace/ava_ros/devel;/home/ava/workspace/ros_ivp/devel;/opt/ros/kinetic;/home/ava/CMake/Modules/
-- This workspace overlays: /home/ava/workspace/sci288ava/devel;/home/ava/workspace/ava_ros/devel;/home/ava/workspace/ros_ivp/devel;/opt/ros/kinetic
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/ava/workspace/test_msgs/build/test_results
-- Found gmock sources under '/usr/src/gmock': gmock will be built
-- Found gtest sources under '/usr/src/gmock': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.14
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 1 packages in topological order:
-- ~~  - test_msgs
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'test_msgs'
-- ==> add_subdirectory(test_msgs/test_msgs)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
/opt/ros/kinetic/share/genmsg/cmake/pkg-genmsg.cmake.em:56: error: <class 'genmsg.base.InvalidMsgSpec'>: /home/ava/workspace/test_msgs/src/test_msgs/test_msgs/msg/Limits.msg: Invalid declaration: float32 minimum
Traceback (most recent call last):
  File "/usr/bin/empy", line 3302, in <module>
    if __name__ == '__main__': main()
  File "/usr/bin/empy", line 3300, in main
    invoke(sys.argv[1:])
  File "/usr/bin/empy", line 3283, in invoke
    interpreter.wrap(interpreter.file, (file, name))
  File "/usr/bin/empy", line 2295, in wrap
    self.fail(e)
  File "/usr/bin/empy", line 2284, in wrap
    callable(*args)
  File "/usr/bin/empy", line 2359, in file
    self.safe(scanner, done, locals)
  File "/usr/bin/empy", line 2401, in safe
    self.parse(scanner, locals)
  File "/usr/bin/empy", line 2421, in parse
    token.run(self, locals)
  File "/usr/bin/empy", line 1425, in run
    interpreter.execute(self.code, locals)
  File "/usr/bin/empy", line 2595, in execute
    _exec(statements, self.globals, locals)
  File "/usr/bin/empy", line 42, in _exec
    exec("""exec code in globals""")
  File "<string>", line 1, in <module>
  File "<string> ...
(more)
2019-07-31 06:55:35 -0500 received badge  Rapid Responder (source)
2019-07-31 06:55:35 -0500 answered a question Trouble Building Messages: Invalid Declaration 'float32'

Apparently the problem was that I used tabs in my msg file rather than spaces; as soon as I replaced the tabs, it compil

2019-07-31 01:35:50 -0500 received badge  Popular Question (source)
2019-07-30 14:13:04 -0500 commented question invalid declaration

Sorry about that and thank you for deleting this... I have no idea how that happened.

2019-07-30 13:39:14 -0500 asked a question invalid declaration

invalid declaration I'm trying to define a simple message for a larger suite of messages that just defines the limits of

2019-07-30 13:38:28 -0500 asked a question Trouble Building Messages: Invalid Declaration 'float32'

Trouble Building Messages: Invalid Declaration 'float32' I'm trying to define a simple message for a larger suite of mes