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

jlack's profile - activity

2022-07-06 05:46:00 -0500 received badge  Famous Question (source)
2022-06-16 10:59:58 -0500 commented answer [ROS2 foxy] Interactive marker server inside a Rviz plugin

Was there ever a resolution here? I am in exactly the same spot you were here I think. I'm getting spammed with Sending

2022-06-16 10:59:23 -0500 commented answer [ROS2 foxy] Interactive marker server inside a Rviz plugin

Was there ever a resolution here? I am in exactly the same spot you were here I think. I'm getting spammed with

2022-06-16 10:59:23 -0500 received badge  Commentator
2022-05-02 14:33:25 -0500 commented answer ros2 launch arg filepath to contents

This line doesn't work, absolute_file_path = Path(file_path).resolve(). Throws a type error, TypeError: expected str, b

2022-04-27 18:10:41 -0500 received badge  Notable Question (source)
2022-04-27 02:31:46 -0500 received badge  Popular Question (source)
2022-04-26 15:50:24 -0500 asked a question ros2 launch arg filepath to contents

ros2 launch arg filepath to contents In a ros2 launch file if I declare a launch argument as, DeclareLaunchArgument('my

2019-08-17 14:09:53 -0500 received badge  Notable Question (source)
2019-08-17 14:09:53 -0500 received badge  Famous Question (source)
2019-04-08 05:26:16 -0500 received badge  Famous Question (source)
2019-04-08 01:08:21 -0500 marked best answer can ament package depend on catkin package

Is there any clean way of having an ament package depend on a catkin package if, say, their workspaces are different but maybe the ament workspace is an overlay on the catkin workspace? The main problem I think we're seeing is if the catkin package has system dependencies(on for example Boost), the ament package can't properly link all the libraries exported from the catkin package that would normally be available in ${catkin_LIBRARIES}

2018-06-07 07:41:43 -0500 received badge  Famous Question (source)
2018-06-07 07:41:43 -0500 received badge  Notable Question (source)
2018-05-13 16:49:12 -0500 received badge  Famous Question (source)
2018-05-13 16:49:12 -0500 received badge  Notable Question (source)
2018-05-04 08:24:07 -0500 received badge  Famous Question (source)
2018-02-20 22:02:58 -0500 received badge  Nice Answer (source)
2018-01-10 10:08:36 -0500 received badge  Student (source)
2018-01-10 10:08:01 -0500 received badge  Popular Question (source)
2018-01-09 10:59:50 -0500 commented answer can ament package depend on catkin package

Yeah I was just wondering about how to keep from manually having to link my dependencies dependencies libraries without

2018-01-09 10:59:08 -0500 commented answer can ament package depend on catkin package

Yeah I was just wondering about how to keep from manually having to link my dependencies dependencies libraries. I'm thi

2018-01-09 10:47:27 -0500 asked a question can ament package depend on catkin package

can ament package depend on catkin package Is there any clean way of having an ament package depend on a catkin package

2018-01-04 22:22:19 -0500 received badge  Notable Question (source)
2018-01-04 17:52:53 -0500 received badge  Popular Question (source)
2018-01-04 13:48:26 -0500 marked best answer Packages available in ros2

Is there a list of available packages for ros2 yet? I'm tasked with evaluating how many of our current dependencies are available in ros2 and haven't been able to find a distribution list as is available with ros1 here for kinetic

2018-01-04 13:48:25 -0500 commented answer Packages available in ros2

Ugh I must be blind...Thanks!

2018-01-04 13:45:30 -0500 asked a question Packages available in ros2

Packages available in ros2 Is there a list of available packages for ros2 yet? I'm tasked with evaluating how many of ou

2017-11-14 07:58:04 -0500 edited answer roscpp Callback Thread Safety SEGFAULT

Did you ever figure this out? I think i'm having the same problem.

2017-11-14 07:58:04 -0500 received badge  Editor
2017-11-14 07:32:17 -0500 answered a question roscpp Callback Thread Safety SEGFAULT

Did you ever figure this out? I think i'm having the same problem. For me it seems to only segfault when i've built in r

2017-09-27 03:03:36 -0500 received badge  Popular Question (source)
2017-08-03 07:34:23 -0500 received badge  Enthusiast
2017-08-02 08:51:02 -0500 received badge  Self-Learner (source)
2017-08-02 08:51:02 -0500 received badge  Teacher (source)
2017-08-02 08:50:52 -0500 received badge  Notable Question (source)
2017-08-02 08:50:02 -0500 marked best answer Do rosservice calls from rtt_ros respect orocos operation thread spec?

Say I have an orocos component that has an operation such as,

this->addOperation("do_work", &MyWorker::doWork, this, RTT::ClientThread).doc("Does work");

Where when called, this blocks the callers thread and does not block the task context thread in OROCOS.

I'm unable to find anywhere in the documentation for rtt_ros_integration whether or not ROSServiceService calls respect the orocos operation spec on whether to block the client thread of the task context thread.

2017-08-02 08:49:57 -0500 answered a question Do rosservice calls from rtt_ros respect orocos operation thread spec?

Finally got this working, and long story short the answer is yes, the rosservice functionality offered by rtt_ros does r

2017-08-02 08:45:32 -0500 received badge  Popular Question (source)
2017-07-30 15:18:09 -0500 commented question Do rosservice calls from rtt_ros respect orocos operation thread spec?

Yeah figured i'd throw it on here and see if I found any takers. Thanks i'll try on the rtt_ros issue board as well.

2017-07-30 14:12:38 -0500 asked a question Do rosservice calls from rtt_ros respect orocos operation thread spec?

Do rosservice calls from rtt_ros respect orocos operation thread spec? Say I have an orocos component that has an operat

2017-06-29 11:23:01 -0500 marked best answer How to propagate actuator commands from actuator to joint space

I'm working in on the kinetic-devel branch, and need to have the transmissions propagate actuator commands from actuator to joint space, but am having trouble figuring out how to make this happen because no ActuatorToJoint interfaces are created when the transmissions are created. I know this is not typically something you need to do, but humor me.

I'm trying to do all of this without copy/pasting/modifying all of the work done by the transmission_interface_loader. I feel like there's gotta be a "built in" way to make this happen, but i'm struggling to see it.

So picture a SimRobotHw in a gazebo plugin that will read joint state information from the sim robot, convert to actuator space, then give that to another HardwareRobotHw implementation that converts that actuator state info to joint state info in the read() method. Then in the write() method, it'll convert any joint commands to actuator commands and send it back over to the SimRobotHw. So now the SimRobotHw has a bunch of actuator commands it needs to convert back into joint space so it can send those commands to the simulated robots joints.

Edit: This kinda looks like,

class SimRobotHw : public RobotHw
{
    read()
   {
       sim_jnts_to_ros_control_jnts();
       propegate_jnt_state_to_act_state();
       publish(); // publish actuator data to be received by HardwareRobotHw in its read() method
   }

   write()
   {
       subscribe(); // Receive actuator commands from HardwareRobotHw in its write() method
       propegate_joint_cmd_to_act_cmd();
       ros_cntrl_joints_to_sim_jnts();
   }

}

Then the other side looks like a typical implementation of a RobotHw as you would expect and doesn't do any reverse propegation.

2017-06-29 11:23:01 -0500 received badge  Scholar (source)
2017-06-29 11:22:54 -0500 answered a question How to propagate actuator commands from actuator to joint space

Got this working, but requires a slight modification to ros_control. Answer included here and corresponding PR

2017-06-28 13:35:32 -0500 marked best answer Load plugin where base class exists in another project

I'm having some trouble loading a plugin and decided to open an issue to see if it's even possible. I am creating package_B where i'm creating a class that implements a plugin base class that exists in package_A.

Also, somewhere in package_A, they call loader->createInstance(plugin_type). When plugin_type equals the plugin i've created in package_B, it fails saying the plugin doesn't exist. But when the plugin type is one of the plugins created/exported from package_A, it works just fine. I feel like maybe pluginlib isn't built to do what i'm trying to make it do. Thoughts?

<?xml version="1.0"?>
<package format="2">
<name>test</name>
<version>0.2.0</version>
<description>The test package</description>

<maintainer email="me@domain.com">Jordan Lack</maintainer>

<license>TODO</license>

<buildtool_depend>catkin</buildtool_depend>
<build_depend>cmake_modules</build_depend>
<depend>eigen</depend>
<depend>hardware_interface</depend>
<depend>roscpp</depend>
<depend>pluginlib</depend>
<depend>tinyxml</depend>
<depend>boost</depend>
<depend>transmission_interface</depend>

<export>
    <test plugin="${prefix}/plugins.xml" />
</export>
</package>

And here's my CMakeLists.txt

cmake_minimum_required(VERSION 2.8.3)
project(test)

find_package(catkin REQUIRED hmi_cmake hardware_interface roscpp cmake_modules pluginlib 
transmission_interface)

find_package(TinyXML REQUIRED)
find_package(Boost REQUIRED)
find_package(Eigen3 REQUIRED)

# check c++11 / c++0x
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if (COMPILER_SUPPORTS_CXX0X)
    set(CMAKE_CXX_FLAGS "-std=c++0x")
else ()
    message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a 
different C++ compiler.")
endif ()

catkin_package(
    INCLUDE_DIRS include
    LIBRARIES ${PROJECT_NAME}
    CATKIN_DEPENDS hardware_interface roscpp pluginlib transmission_interface
    DEPENDS TinyXML Boost Eigen3
)

include_directories(include ${catkin_INCLUDE_DIRS} ${TinyXML_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} 
${EIGEN3_INCLUDE_DIRS})

add_library(${PROJECT_NAME} src/sensor_parser.cpp src/transmission_interface_loader.cpp)
target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${TinyXML_LIBRARIES} ${Boost_LIBRARIES})

install(DIRECTORY include/${PROJECT_NAME}/
    DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION})

install(TARGETS ${PROJECT_NAME}
    ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
    LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
    RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

install(FILES plugins.xml
        DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})

add_library(test_plugins test/test_plugins.cpp)
target_link_libraries(test_plugins ${catkin_LIBRARIES} ${PROJECT_NAME})

install(TARGETS test_plugins
        ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
        LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
        RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

And finally my plugins.xml

    <library path="lib/libtest_plugins">
    <class type="test_namespace::TestActuatorPlugin" base_class_type="test_namespace::Actuator">
        <description>
            An actuator plugin for unit testing
        </description>
    </class>

    <class type="test_namespace::TestImuPlugin" base_class_type="test_namespace::Imu">
        <description>
            An imu plugin for unit testing
        </description>
    </class>
    <class type="test_namespace::TestForceTorquePlugin" base_class_type="test_namespace::ForceTorque">
        <description>
            A force/torque plugin for unit testing
        </description>
    </class>
    <!--This next plugin is the one that ros_control can't load-->
    <class type="test_namespace::MyRequisiteProvider" base_class_type="transmission_interface::RequisiteProvider">
        <description>
            A force/torque plugin for unit testing
        </description>
    </class>
</library>
2017-06-28 11:36:30 -0500 answered a question Load plugin where base class exists in another project

Ok I finally figured out what's going on. The problem is in the package.xml, since the base class for my plugin lives in