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

PeterMilani's profile - activity

2023-02-02 15:25:37 -0500 received badge  Notable Question (source)
2023-02-02 15:25:37 -0500 received badge  Famous Question (source)
2023-02-02 15:25:37 -0500 received badge  Popular Question (source)
2022-11-10 17:57:06 -0500 answered a question ros2 bag reindex fails after bag not shutdown correctly

TLDR; Assuming your bag file is called Install the application sqlite3 through apt install sqlite3 Check for issues

2022-11-10 17:57:06 -0500 received badge  Rapid Responder (source)
2022-11-10 17:54:18 -0500 asked a question ros2 bag reindex fails after bag not shutdown correctly

ros2 bag reindex fails after bag not shutdown correctly If a ros2 bag record is interrupted through a power cut, it is l

2022-04-26 08:59:33 -0500 received badge  Nice Question (source)
2022-02-05 07:04:09 -0500 received badge  Good Question (source)
2021-10-09 14:36:51 -0500 received badge  Great Answer (source)
2021-10-09 14:36:51 -0500 received badge  Guru (source)
2021-08-23 03:44:51 -0500 received badge  Nice Question (source)
2021-06-16 09:07:40 -0500 marked best answer Skip dependencies with rosdep install?

Hi I've built a number of ros installations on ubuntu for armhf from source, from 12.04 to 14.04 however when running rosdep for package dependencies:

rosdep install --from-paths src --ignore-src --rosdistro indigo -y

I usually hit problems as some dependencies (sbcl, yaml-cpp to name a few) are not built for armhf. I can build and install these from source however rosdep is usually not satisfied and can't find or substitute the built packages. Additionally its pretty hard to find the source packages that depend on these so that the package.xml may be modified.

Is there some way to stop rosdep from searching for particular packages or detect installations that didn't come from apt-get or as dpkg or help it find the installed dependency?

2021-01-23 20:09:28 -0500 commented answer Rosserial Arduino Compilation Error: No <CSTRING>

I found that I had to use 0.7.9 as listed above. version 0.9.4 had the same issue.

2021-01-05 20:52:54 -0500 commented answer Rostest and C++: Test node does not exist or is not executable

please detail what the simple mistake was. If you made it then others may.

2020-12-12 17:52:20 -0500 received badge  Nice Answer (source)
2020-08-12 05:35:51 -0500 received badge  Notable Question (source)
2020-08-12 05:35:51 -0500 received badge  Famous Question (source)
2020-08-12 05:35:51 -0500 received badge  Popular Question (source)
2020-06-15 12:17:38 -0500 marked best answer How do you specify joint location in SDF 1.0

Hi all

I'm putting together an arm manipulator My urdf model worked well with rvis and all the joints worked as expected and the kinematics were correct. However I've been trying to convert to SDF1.0 format in order to use plugins but my kinematics are all odd. The joints still have the <origin> tag specified (in order to correctly locate the joint) but even when I modify the pose (which I'm taking to be "x y z r p y", though the documentation is pretty scarce) value, it doesn't change the positioning of the joint.

Any help for converting these files or helping me understand how kinematics are specified in sdf would be great.

Peter

2020-05-17 14:25:23 -0500 marked best answer Using Controller Manager and getting it to work.

Hi all

I'm trying to get a controller to run in a ros_control controller manager and followed the general principles listed on the ros_control git wiki.

Now in the controller manager runs in a non-realtime loop .

The controller init routine runs and completes successfully, however, no further starting(), stopping(), or update routines get run().

At various times, I have adjusted the interface setup on the controller to open some custom interfaces, and usually they cause the init() to fail (but with out any warnings that it will or does)

EDIT Here is the loggers for the controller manager program when rosservice /controller_manager/list_controllers is called: <since removed="">

ANSWER If you aren't interested in following the comment thread attached to adolfo's answer, the problem was summed up by: 1. Not understanding how the controller manager started and stopped controllers. 2. Getting the services on the controller manager to work.

  1. The controller manager has no exposed start or stop routine or service. Instead the user has to use switch_controllers(startcontroller, stopcontroller, strictness). or the equivalent service. To use a controller, it must first be loaded by the controller_manager, using load_controller(controller), and then started. To perform a start of a newly loaded controller, the switch_controllers() routine is used with an empty field for the stopcontroller. Strictness has value of 1 (accepts errors) or 2 (switch must be perfect (STRICT)). The service call is:

    rosservice call /controller_manager/switch_controllers [starting_controller_name] [stopping_controller_name] 1

  2. If you find that the controller_manager is not processing the service calls but instead 'freezes' then your hardware implementation program is not effectively dealing with the callbacks of the controller_manager (and possibly your controller)

It was found that a specific ros::callbackqueue needed to be established for the implementation's nodehandle using nodehandle::setCallbackQueue(). It was found that an AsyncSpinner was required to work on that queue, using the ros::AsyncSpinner spinner(0, &my_callback_queue); This allowed the spinner to explicitly work on the callbacks passed to the nodehandle. As this nodehandle was passed to the controller manager, the controller manager service callbacks were also pushed onto this queue. This link details the different ways of dealing with callbacks and spinners. Section 4 covers the details of the method that worked.

Thanks to Adolfo for his perserverence and help in resolving this matter.

2020-05-13 17:20:47 -0500 received badge  Guru (source)
2020-05-13 17:20:47 -0500 received badge  Great Answer (source)
2020-04-09 12:25:14 -0500 received badge  Famous Question (source)
2020-04-07 00:02:09 -0500 marked best answer Understanding trajectory_msgs/JointTrajectory

Hi All

In working with the JointTrajectory message, I'm a bit unsure as to how the data should be filled.

If we have an arm with 7 joints, and a trajectory for those joints that has 100 points should the JointTrajectory message sizes be as follows:

joint_names -- size = 700

points -- size =700

if so, then should the arrays in JointTrajectoryPoints be all uniary?

Else should the sizes be:

joint_names -- size = 7

points -- size =7

and the position, velocity and acceleration arrays all be 100 in size. But if this is so, then time_from_start should also have 100 points. instead its just a single value

I know this can be a simple question but I'd appreciate some clarification.

cheers

Peter

2020-03-21 05:17:31 -0500 marked best answer How to Connect a tf::messageFilter to two subscribers

Hi All,

I would like to synchronise two sensor inputs with a tf::messageFilter. How would I go about connecting both message_filters::subscribers to a single tf::messageFilter.

I have tried to sync both the subscribers via a synchroniser using an approximate time policy. I would like to connect this to the tf::messageFilter In the header file I have:

tf::TransformListener m_tfListener;
    typedef message_filters::sync_policies::ApproximateTime<sensor_msgs::NavSatFix, sensor_msgs::Imu> MySyncPolicy;
    message_filters::Subscriber< sensor_msgs::NavSatFix > *m_gpsSub;
    message_filters::Subscriber<sensor_msgs::Imu> *m_imuSub;
    message_filters::Synchronizer<MySyncPolicy>* sync;

    tf::MessageFilter< sensor_msgs::NavSatFix, sensor_msgs::Imu>* m_gpsFilter;

in the .cpp file I have

 m_gpsSub= new message_filters::Subscriber<sensor_msgs::NavSatFix>(private_nh, "fix", 5);
  m_imuSub = new message_filters::Subscriber<sensor_msgs::Imu>(private_nh, "imu", 5) 
  m_gpsFilter = new tf::MessageFilter<sensor_msgs::NavSatFix, sensor_msgs::Imu>(m_tfListener, odomFrameId, 10) 
  sync= new message_filters::Synchronizer<MySyncPolicy>(MySyncPolicy(20), *m_gpsSub, *m_imuSub);
  m_gpsFilter->connectInput(sync);
  m_gpsFilter->registerCallback(boost::bind(&SwarmbotMCL::gpsCallback, this, _1, _2));

however It complains that tf::MessageFilter can only take one input:

 error: wrong number of template arguments (2, should be 1)
/opt/ros/hydro/include/tf/message_filter.h:106:7: error: provided for ‘template<class M> class tf::MessageFilter’

does anyone know of the correct way to do this?

2019-12-11 09:39:17 -0500 received badge  Nice Question (source)
2019-12-03 09:49:45 -0500 commented question Boost mutex error when using SimpleActionClient with std::unique_ptr

try transposing the line ros::shutdown() with spin_thread.join(). I think these are issues where an object is destroyed

2019-11-18 00:29:23 -0500 received badge  Good Answer (source)
2019-10-16 10:10:01 -0500 received badge  Famous Question (source)
2019-08-29 14:03:42 -0500 received badge  Good Answer (source)
2019-08-29 10:35:42 -0500 marked best answer implementing realtime controllers with ros_control

Hi All,

I'm starting to implement a better control framework for a manipulator. I'd like keep some level of compatibility with the ros_control project thats under development. I'm looking to implement a RT velocity controller using Xenomai Native API, and communicating with user space via shared memory. It appears that interacting with this shared memory should be the job of robot_hw class, which seems to load an interface.

Should I look to only modify the interface classes (joint_state_interface, actuator_interface) to conduct the memsharing operations? ie, is that the intention of ros_control, that users only have to adjust the interface classes to marry up with their hardware arrangement? Or is there some lower level?

EDIT The method by which the realtime controller is implemented is really not important, I just would like to know at which part of the ros_control api I should implement access to the lower level realtime controllers. Ie which classes should I modify to include the access point to the hardware.

any guidance would be welcome

cheers

Peter

2019-08-29 10:35:42 -0500 received badge  Good Answer (source)
2019-08-11 11:21:07 -0500 received badge  Good Answer (source)
2019-05-22 18:46:35 -0500 commented answer Getting Eigen3 Matrix3f::eulerAngles() values similar to tf2 Matrix3x3f::getRPY() roll, pitch, yaw

Thanks, I've been following this up on eigen bugzilla. I dont really like the Eigen/EulerAngles setup as it creates a ne

2019-05-20 01:59:11 -0500 marked best answer setup.py not installing python module during catkin build

Hi, I'm trying to install a python module defined in a ros package using the guide defined here. However I find that my package defined in the:

<rospackage>/src/<my_python_pkg>/*.*

is not showing up in the the install/lib/python/dist-utils of my build. I only get the __init__.py from my package installed there.

The contents of my package include multiple subpackages but these folders are not being copied at all. However, two of my scripts that have been defined in the catkin_install_python() function of CMakeLists.txt do show up.

I am using catkin build tools, and my package.xml has a build dependency on rospy, if that matters.

Any guidance would be appreciated.