Ask Your Question

rmck's profile - activity

2021-06-23 12:37:25 -0600 received badge  Good Question (source)
2020-01-24 06:05:27 -0600 marked best answer Difference between kacanopen and ros_canopen?

I'm attempting to get the output from a Kuebler 5868 draw wire encoder into ROS. The 5868 encoder is a CANOpen device that outputs the draw wire position over the CANbus.

My setup is Indigo running on Ubuntu 14.04 on a PC. Once I've decided between the two libraries I will be using a Raspberry Pi with Rasbian and a CAN shield to listen on the CANBus. My eventual goal is to broadcast the position of the draw wire so MoveIt can compute the extension of a hydraulic boom.

My difficulty at the moment is in working out whether I should be using ROS_canopen or kacanopen to interface with the encoder. I've been trying to understand how to use ROS_canopen for a few hours and haven't had a great deal of luck. Can anyone outline the key differences between these two packages and advise which will be easiest to work with?

EDIT:

Here's my launch file:

    <launch>
    <arg name="yaml" default="$(find extension_publisher)/draw_encoder.yaml" />

    <node name="canopen_chain_node" pkg="canopen_chain_node" type="canopen_chain_node"  output="screen"/>
   </launch>

And here's my yaml:

bus:
  device: can0 # socketcan network, this will require changing based on PLC config
  master_allocator: canopen::ExternalMaster::Allocator 
sync:
  interval_ms: 10 # set to 0 to disable sync
  overflow: 0 # overflow sync counter at value or do not set it (0, default)

nodes:
  defaults: # optional, all defaults can be overwritten per node
    eds_pkg: extension_publisher # optional package  name for relative path
    eds_file: "/kuebler_drivers/S58X8MT_HC.eds"
  node1:
    id: 1
    name: draw_position
    eds_file: "/kuebler_drivers/S58X8MT_HC.eds" #path to EDS/DCF file
    publish: ["6004!"] #Position value
  node2:
    id: 2
    name: draw_speed
    eds_file: "/kuebler_drivers/S58X8MT_HC.eds" #path to EDS/DCF file
    publish: ["6030!"] #Position value

Does that look about right? Thanks!

2019-05-20 01:59:02 -0600 marked best answer Using a laser scan/point cloud to set work-area boundaries

Can anyone recommend a way to use a laser scan or point cloud to limit the areas a fixed-base robot arm will try to reach? I've got a 2D lidar mounted behind the arm that scans the walls and ceiling, giving a roughly parabolic profile. The arm has sufficient reach and maneuverability that it could easily reach and collide with the walls or ceiling. I can assume that the output of the scanner approximately matches the profile directly ahead and behind the position of the arm.

Is there a simple way to set the laser scan as the Y and Z boundaries of the work-area? Since the scans are loosely parabolic I can't just set a square work area limit or create a work cell like in ROS Industrial.

I'm using MoveIt and ROS-Control to control the arm. I'm essentially trying to use the arm to paint the walls and ceiling of the space. I've included a fake link on the URDF that traces the surface profile so collision is avoided there. However, some times other links will move outside the laser scan space which would lead to a collision in real world usage.

Any advice or recommendations appreciated.

2018-12-26 08:24:42 -0600 received badge  Famous Question (source)
2018-11-29 18:52:50 -0600 received badge  Famous Question (source)
2018-09-19 12:03:39 -0600 received badge  Nice Question (source)
2018-07-18 09:44:49 -0600 received badge  Necromancer (source)
2018-05-22 07:52:34 -0600 received badge  Notable Question (source)
2018-05-19 08:11:07 -0600 received badge  Student (source)
2018-03-19 10:51:08 -0600 received badge  Popular Question (source)
2018-01-19 02:11:32 -0600 received badge  Famous Question (source)
2018-01-18 20:04:12 -0600 marked best answer MoveIt perception - Failed to configure updater of type PointCloudUpdater

I'm attempting to load an existing pointcloud into moveit but it keeps throwing an error. Specifically, it says "Failed to configure updater of type PointCloudUpdater" Here's the console output immediately before the error:

Starting context monitors...
ros.moveit_ros_planning.planning_scene_monitor: Starting scene monitor
ros.moveit_ros_planning.planning_scene_monitor: Listening to '/planning_scene'
ros.moveit_ros_planning.planning_scene_monitor: Starting world geometry monitor
ros.moveit_ros_planning.planning_scene_monitor: Listening to '/collision_object' using message notifier with target frame '/base_link '
ros.moveit_ros_planning.planning_scene_monitor: Listening to '/planning_scene_world' for planning scene world geometry
ros.moveit_ros_perception: Failed to configure updater of type PointCloudUpdater

Here's my sensors.yaml file:

 sensors:
  - sensor_plugin: occupancy_map_monitor/PointCloudOctomapUpdater
    image_topic: /cloud_pcd
    max_range: 5.0
    point_subsample: 1
    padding_offset: 0.1
    padding_scale: 1.0
    filtered_cloud_topic: filtered_cloud

I load my pointcloud using the following console command:

rosrun pcl_ros pcd_to_pointcloud /home/Documents/out_pcd/processed_clouds/Scanner-2_rosbag.bag.pcd

Which publishes the pointcloud2 to the topic /cloud_pcd

Here's my sensor_manager.launch.xml:

<launch>
  <param name="octomap_frame" type="string" value="odom_combined" /> 
  <param name="octomap_resolution" type="double" value="0.025" />
  <param name="max_range" type="double" value="5.0" />

  <!-- Load the robot specific sensor manager; this sets the moveit_sensor_manager ROS parameter -->
  <arg name="moveit_sensor_manager" default="vehicle_model" />
  <include file="$(find vehicle_moveit)/launch/$(arg moveit_sensor_manager)_moveit_sensor_manager.launch.xml" />

</launch>

And finally, here's vehicle_model_moveit_sensor_manager.launch.xml:

<launch>
    <rosparam command="load" file="$(find vehicle_moveit)/config/sensors.yaml" />
</launch>

Any advice at this stage would be appreciated. I can't seem to find any record of others having this error.

2018-01-18 20:03:56 -0600 received badge  Notable Question (source)
2018-01-18 20:03:51 -0600 received badge  Famous Question (source)
2018-01-18 18:27:59 -0600 answered a question Get link absolute orientation - IMU position

I've marked Pete's answers as correct because it put me on the right path. My actual solution was a little different. Fi

2018-01-18 18:20:20 -0600 marked best answer Get link absolute orientation - IMU position

Can anyone advise how to calculate the quaternion orientation of a link? I'm following a somewhat unconventional approach and using an IMU that outputs it's absolute quaternion to measure the position of my end effector link. I can see the absolute orientation of each link if I look at the TF tree in RVIZ.

I have encoders on my other joints which gives me an accurate pose up to the end effector. To remove the effects of these other joints on the IMU reading I have tried to multiply the IMU output by the inverse of the orientation quaternions to that point. I have pulled these quaternions from the rotation component of the TF broadcast. I then set my end effector position using the roll component of the transformed quaternion e.g.

tf2::convert(global_transforms_.transforms[0].transform.rotation, extension_pitch_component);
tf2::convert(global_transforms_.transforms[1].transform.rotation, slew_yaw_component);
tf2::convert(global_transforms_.transforms[7].transform.rotation, orbital_roll_component);
tf2::convert(global_transforms_.transforms[8].transform.rotation, tilt_pitch_component);    
tf2::Quaternion output;
output = tilt_pitch_component * (orbital_roll_component * (extension_pitch_component * slew_yaw_component));
tf2::Quaternion publication;
publication = output.inverse() * imu_reading;
double roll, pitch, yaw;
tf2::Matrix3x3(publication).getEulerYPR(yaw, pitch, roll, 1);
setJointPosition(roll);

The problem is that the variable output doesn't seem to match the TF absolute position of the link before the end effector. If I look at the TF output in RVIZ and publish a pose in the same position, there's a discrepancy between the two. I had a look at the source for the robot state publisher and it looks like it's multiplying the pose matrices of the joints from TF to get the absolute quaternion for each. Is that right?

My end effector can rotate 180 degrees and getting it's orientation right is fairly critical to my application. Unfortunately I can't change to an encoder at this point so I'm stuck with my IMU. Because the other joints can twist and roll I need to remove their effects on the IMU and measure only it's relative change in orientation. Any help appreciated!

2018-01-12 18:39:55 -0600 received badge  Notable Question (source)
2018-01-12 17:34:46 -0600 commented answer Get link absolute orientation - IMU position

I think I follow. With the static transform, would that take into account the links along the arm? e.g. base_link ->

2018-01-12 17:34:34 -0600 commented answer Get link absolute orientation - IMU position

I think I follow. With the static transform, would that take into account the links along the arm? e.g. base_link ->

2018-01-12 09:43:59 -0600 received badge  Necromancer (source)
2018-01-12 09:22:25 -0600 received badge  Popular Question (source)
2018-01-12 01:29:00 -0600 received badge  Necromancer (source)
2018-01-12 00:11:01 -0600 asked a question Get link absolute orientation - IMU position

Get link absolute orientation - IMU position Can anyone advise how to calculate the quaternion orientation of a link? I'

2018-01-10 19:53:07 -0600 commented answer How to avoid the axis jumping when the orientation is constrainted

Ahhh right, I see. I also added the same load command to my C++ launch file. That resolved the issue for me. It seems to

2018-01-10 19:06:09 -0600 answered a question How to avoid the axis jumping when the orientation is constrainted

Late response but I believe this is related to a known moveit namespace issue, reported here: https://bitbucket.org/trac

2018-01-02 20:22:49 -0600 commented question MoveIt acceleration scaling factor violated

I've reimplemented my controller using ros_control_boilerplate and this seems to have helped. However, my acceleration c

2017-12-10 17:12:34 -0600 asked a question MoveIt acceleration scaling factor violated

MoveIt acceleration scaling factor violated I'm currently testing moveit on custom hardware using ROS Indigo. I'm findin

2017-11-29 19:33:30 -0600 commented answer Symbol lookup error: libgeometry_shape.so: undefined symbol: _ZN6Assimp8Importer18SetPropertyIntegerEPKciPb

I was able to fix this without removing ROS by using dpkg -r --force-depends assimp-* to remove the problem packages, re

2017-11-29 19:30:40 -0600 answered a question My workspace cannot build because assimp library update

I had the same issue on Indigo. I was able to resolve it without uninstalling ROS by using dpkg to remove the problem pa

2017-10-26 21:08:40 -0600 commented answer Failure in MoveIt! move_group on Ubuntu Mate 16.04 ROS Kinetic on Raspberry Pi 3

Installed from source and came across the same issue. I've bumped an existing issue on the moveit github page with some

2017-10-26 17:55:59 -0600 commented answer Failure in MoveIt! move_group on Ubuntu Mate 16.04 ROS Kinetic on Raspberry Pi 3

Installed from source and came across the same issue. I've bumped an existing issue on the moveit github page with some

2017-10-24 23:54:58 -0600 commented answer Failure in MoveIt! move_group on Ubuntu Mate 16.04 ROS Kinetic on Raspberry Pi 3

Bumping this, I'm experiencing the same issue. Installing FCL from source didn't fix anything so I'm currently trying to

2017-10-24 17:17:12 -0600 commented question Raspberry Pi Catkin make

Hmm, it may be worth checking your package configuration. If I run "sudo apt-get install ros-kinetic-hector-slam", I am

2017-10-24 16:59:44 -0600 commented question Raspberry Pi Catkin make

I've had a lot of success by adding additional 1gb swap space and ssh'ing into the pi rather than using the GUI. I run "

2017-10-22 17:17:20 -0600 commented answer Using a laser scan/point cloud to set work-area boundaries

What would you suggest doing differently? A quick glance over the assembler package isn't making anything leap out at me

2017-10-19 07:35:44 -0600 received badge  Self-Learner (source)
2017-10-19 02:42:24 -0600 received badge  Notable Question (source)
2017-10-18 16:35:01 -0600 commented answer Using a laser scan/point cloud to set work-area boundaries

Sort of, the laser scan represents the surface I want to paint and which I don't want to collide with. I have a fake lin

2017-10-18 16:32:04 -0600 edited answer Using a laser scan/point cloud to set work-area boundaries

I realised a simple solution here was to fake additional 3D scans and pass these as a point cloud to the MoveIt sensor m

2017-10-18 16:20:48 -0600 received badge  Popular Question (source)
2017-10-17 23:28:19 -0600 answered a question Using a laser scan/point cloud to set work-area boundaries

I realised a simple solution here was to fake additional 3D scans and pass these as a point cloud to the MoveIt sensor m

2017-10-17 22:24:07 -0600 asked a question Using a laser scan/point cloud to set work-area boundaries

Using a laser scan/point cloud to set work-area boundaries Can anyone recommend a way to use a laser scan or point cloud

2017-10-16 17:07:17 -0600 received badge  Popular Question (source)
2017-10-16 17:06:51 -0600 received badge  Famous Question (source)
2017-08-22 19:08:42 -0600 commented question Correct ROS_MASTER_URI format for IPV6?

For anyone else in the rare situation of using an ad-hoc network for this, here's the extra interface I added to /etc/ne

2017-08-22 19:07:32 -0600 commented question Correct ROS_MASTER_URI format for IPV6?

I haven't solved this problem but worked around it by creating an additional wlan0 interface on the Raspberry Pi that us

2017-08-21 20:31:28 -0600 received badge  Notable Question (source)
2017-08-21 18:03:51 -0600 edited question Correct ROS_MASTER_URI format for IPV6?

Correct ROS_MASTER_URI format for IPV6? According to an answer to a previous question, IPV6 networking has been integrat

2017-08-21 08:36:37 -0600 received badge  Popular Question (source)
2017-08-20 23:15:07 -0600 commented question Correct ROS_MASTER_URI format for IPV6?

Thanks! I've raised an issue