Quantcast
Channel: ROS Answers: Open Source Q&A Forum - RSS feed
Viewing all 72 articles
Browse latest View live

robot state publisher error

$
0
0
/opt/ros/kinetic/lib/robot_state_publisher/state_publisher: symbol lookup error: /opt/ros/kinetic/lib/liburdf.so: undefined symbol: _ZN4urdf9parseURDFERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE The liburdr.so is located at /opt/ros/kinetic/lib/liburdf.so and I think the package should be installed properly. Have no clue why this error is happening.

URDF and joint_state_publisher

$
0
0
Hi, I'm trying to create a new robot model that implements a LIDAR and a camera, all of that using rtabmap_ros. In order to do that, I created the following basic URDF: (it's the fixed structure of the robot). I also created the parser.cpp file as explained on this [tutorial](http://wiki.ros.org/urdf/Tutorials/Parse%20a%20urdf%20file) I tried to make all of this work thanks to the following launch file: with erl_ugv_description being the name of the dedicated package created in my **catkin_ws** The thing is, when I roslaunch the previous file, I get the expected **tf** and **axes** in rviz. But also an error that says [joint_state_publisher-2] process has died I'm wondering whether the non completion of [this tutorial](http://wiki.ros.org/urdf/Tutorials/Using%20urdf%20with%20robot_state_publisher) on creating a state_publisher node with a C++ code is responsible for my failure. I'm asking this here because I don't understand how I could adapt the C++ code to my situation (a fixed structure, so what about the **odom_trans**, **hinc**, etc ? ...). Thanks !

robot_state_publisher design: multiple publishers on /joint_states ok?

$
0
0
Is robot_state_publisher designed to handle multiple sources of /joint_state information? For example, let's say I have the R2D2-like robot from this [tutorial](http://wiki.ros.org/urdf/Tutorials/Using%20urdf%20with%20robot_state_publisher). If I have one node publishing the state of the 'periscope' on `/joint_states`, and another node publishing the rest of the joints, also on `/joint_states`, will `robot_state_publisher` do the right thing? (i.e., 'merge' the `/joint_state` messages?). I'm currently studying the source code to definitively figure this out, but I see that others have asked this in the past, so I figured I'd raise the issue again.

Ros Jade Osx - compiler error robot_state_publisher

$
0
0
Hi @all i would like to install ros jade on osx. i know that is in experimental state but there's no other way. in package robot_state_publisher an error is generated. [ 71%] Building CXX object CMakeFiles/robot_state_publisher.dir/src/joint_state_listener.cpp.o /Users/blubb/ros_catkin_ws/src/robot_state_publisher/src/joint_state_listener.cpp:165:74: error: no viable conversion from '__map_iterator<__tree_iterator<__value_type<[...], std::__1::shared_ptr>, std::__1::__tree_node, std::__1::shared_ptr>, void *> *, [...]>>' to '__map_iterator<__tree_iterator<__value_type<[...], boost::shared_ptr>, std::__1::__tree_node, boost::shared_ptr>, void *> *, [...]>>' for(std::map< std::string, boost::shared_ptr< urdf::Joint >>::iterator i = model.joints_.begin(); i != model.joints_.end(); i++){ if i comment out the following lines in file ros_catkin_ws/src/robot_state_publisher/src/joint_state_listener.cpp all package are compiled successful In main function: for(std::map< std::string, boost::shared_ptr< urdf::Joint >>::iterator i = model.joints_.begin(); i != model.joints_.end(); i++){ if(i->second->mimic){ mimic.insert(make_pair(i->first, i->second->mimic)); } } its looks like the compiler can´t cast std::shared_ptr to boost::shared_ptr. On my laptop i have a working version of ROS indigo and the file looks the same and it works. Can anybody help me? Thanks

static_transform_publisher and robot_state_publisher

$
0
0
Hello, I am a bit confused about the `static_transform_publisher` and the `robot_state_publisher` (or at least I think I am). So we are setting up a robot with sensor at all, and before we used the urdf approach we were using the `static_transform_publisher` to get the TF between sensors. Now we want to use the urdf approach, i.e. `robot_state_publisher`. This is also publishing TF. So this should be now our source for tf, right? No need for the `static_transform_publisher`? (I think it will even interfere) Thanks!

How to move mobile robot in rviz

$
0
0
Hello, I am sorry for being naive. I have GPS sensor information from a moving car. I have URDF model of a robot with four wheels. All joints are fixed (wheel to base_link). I want to move the robot in rviz according to GPS data. I am able to broadcast tf trasnform following this :[Link](https://answers.ros.org/question/199079/problem-moving-the-robot-in-rviz/) I have gone through these tutorials but all using joint_state_publisher. Any help would be appreciated.

joint state publisher and robot state publisher

$
0
0
Hello, ---------- what is the **difference between JointState publisher and robotstate Publisher**? i understand that i get robot state publisher from the URDF but the joint state ?? if i want real data not fake? ---------- thanks in advance

Facing problem in making parallel Joint

$
0
0
Hi everyone! I am working on a URDF and trying to create a parallel joint. Don't have enough karma to post the picture but I will try my best to explain the situation. The joint should be some way like this; Two parents have the same child, each joint should work individually fine as it is working now. What I need is the effect of both joint on each other. For example, I have the first revolute joint it is rotated by an angle (theta) and the second revolute joint is also trying to move the same link as the first one with another angle (eta). Now, these two joints should have a combined effect on another angle which should be (phi) which is the combined effect of both these rotation either simultaneously or one after another. So here comes the list of problems I faced while trying to build this model. This picture can explain the situation more clearly: ![image description](/upfiles/1510131068196691.png) , As you can see, I have two actuators one at (x-axis) and the other is (z-axis). How can I find the value of (phi) from the tf on the actuation of these two joints? 1. At first, I tried to make it in URDF but as I read that URDF doesn't support any parallel joint and I tested it by myself too. Found this (https://bitbucket.org/osrf/gazebo_models/src/68989fe22ddc430909763eace37d45a4a4936e25/pr2_gripper/model.sdf?at=default) which showed me that it can only possible in SDF, that you can have two parents of the same child. Since it's just an SDF file of the gripper, so I don't know, if anyone has already run it or it worked successfully? 2. I moved to the SDF and converted my file into SDF in order to check whether it has the ability to give me the solution I want. If someone has seen any example of it? how does the parallel joint thing work in SDF? 3. Now the problem is that how can I import my model in Rviz, since I am unable to use the robot state publisher with the SDF, I found this (https://answers.ros.org/question/204803/robot_state_publisher-with-sdf-files/) but it's kind of bit confusing for me. How can I use two formats (URDF and SDF) at the same time in my launch to see my model and get the TF tree. Can anyone explain me this also? If anyone knows any better approach, kindly drop your comments and suggestions, Thank you all.

Publishing joint_state with python and displaying in rviz

$
0
0
Hey Guys, I'm have a robot arm I'm trying to put into ros. I went through the urdf_tutorial and got a urdf that works with the tutorial launch file. Now, I want to write a node that publishes to /joint_states and uses robot_state_publisher to update the robot. I'd like to display the robot in rviz, and also write a subscriber to /joint_states that moves the actual arm. The problem I'm having is, when I write my own simple node to publish to /joint_states, rviz gives me errors for all of my joint transforms. (ie "no transform from [first_segment] to [base_link]" and "no transform from [second_segment] to [base_link]", also there's "Fixed Frame: No tf data. Actual error: Fixed Frame [base_link] does not exist" I've looked at the documentation for robot_state_publisher, read the code for joint_state_publisher and tried manually sending tf's through my node. I use this command to put in my urdf and launch the code: roslaunch launch/display.launch model:=urdf/josh-arm.urdf Here's my urdf, launch file, and python code (sorry I couldn't attach it.. don't have enough karma): Thanks! The urdf file: The Python file (based on the publisher tutorial): #!/usr/bin/env python # license removed for brevity import rospy from std_msgs.msg import String from sensor_msgs.msg import JointState import tf br = tf.TransformBroadcaster(); def get_param(name, value=None): private = "~%s" % name if rospy.has_param(private): return rospy.get_param(private) elif rospy.has_param(name): return rospy.get_param(name) else: return value def talker(): pub = rospy.Publisher('joint_states', JointState, queue_size=10) rospy.init_node('updateArm', anonymous=True) rate = rospy.Rate(10) # 10hz msg = JointState() msg.name = ['base_joint', 'first_segment_joint', 'second_segment_joint', 'third_segment_joint', 'wrist_segment_joint1', 'wrist_segment_joint2']; msg.position = [0,0,0,0,0,0] source_list = get_param("source_list", []) rospy.loginfo(str(source_list)) while not rospy.is_shutdown(): msg.header.stamp = rospy.Time.now(); pub.publish(msg) rate.sleep() if __name__ == '__main__': try: talker() except rospy.ROSInterruptException: pass

model.xml missing in Using urdf with robot_state_publisher

$
0
0
Hi, I am trying to follow the [Using urdf with robot_state_publisher ](http://wiki.ros.org/urdf/Tutorials/Using%20urdf%20with%20robot_state_publisher) tutorial. The required model.xml file mentioned in turial is missing. Is there any way it can be obtained?

Get link absolute orientation - IMU position

$
0
0
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!

robot_state_publisher link publish frequency not consistent

$
0
0
I have a urdf model of a human hand in Rviz for which I update its position via my own tf broadcaster. I have noticed that when I move the hand the fingers lag behind the wrist. I am updating the position of the wrist at 100 Hz and in my launch file, I set the parameter of robot_state_publisher to 100 Hz as well.100 When I look at the rate at wich the tf frames are being published (from rosrun tf view_frames) the update of the palm (first link) is at 100 Hz and the last link "pinky_dof_4" is also updated at 100 Hz. However everything in between is being updated at **10 Hz**. I would like to get all links in the URDF to be updated at 100 Hz. ![image description](/upfiles/14273623435956014.png)

URDF model frames not published properly by robot_state_publisher

$
0
0
Hi. I'm struggling with getting a URDF (or XACRO file to be exact) working with the robot_state_publisher. I know that it has been working when I made the file originally, but after updating and getting back to this project I simply can not get the robot_state_publisher to publish all the frames correctly. You find the XACRO file as part of my repository here: https://github.com/mindThomas/JetsonCar-Simulation/blob/master/jetsoncar_description/urdf/jetsoncar.xacro Try and clone the repository and build it with catkin and then run the rviz launch file. Or you can try and just run the robot_state_publisher on the xacro file output. Running a TF view_frames on the published frames gives the following incorrect result: ![image description](http://www.tkjelectronics.dk/uploads/ROS_URDF_FrameProblem.png) It seems like the problem is related to the revolute or continuous joints. At least if I replace these joints with fixed joints the frames are published correctly. PS. I'm running ROS Kinetic on Ubuntu 16.04. Best regards, Thomas Jespersen

robot_state_publisher posting wrong tf tree (missing connections)

$
0
0
Dear ROS community, I have the following problem: I'm trying to simulate a robotic leg using ROS kinetic and Gazebo. In order to get information about the current frame of each link I'm using the `robot_state_publisher`. He's a subscriber of the `/joint_states` topic and also receives information from the parameter `robot_description` which is loaded as an parameter using the `xacro` file, which describes the leg construction with all it's links and joints. He then publishes to the topic `/tf` When I use the `rqt_tf_tree` to check the tf_tree I have 3 unconnected tree structures as a result, two Joints are missing. I first thought the xacro files would be incompleted, but I checked the `robot_description` by using `$ rosparam get /robot_description` E.g. is one of the missing connections. Do you guys have any suggestion where my problem could be?

Unable to move the arm through Moveit...Error:Maybe failed to update robot state, time diff: 0,822s

$
0
0
Hi, I am trying to control gazebo simulated arm mounted on mobile base through moveit. When I try to execute the trajectories after setting starting and goal positions, I am getting "Maybe failed to update robot state, time diff: 0,822s"in my terminal. **When I remove robot_state_publisher from my launch file trajectories are being executed.** But i need tf tree to visualize octomap. my launch files: my moveit launch file: [/kate_jaco/joint_states] PS: I strongly feel, there is something wrong with the robot state publisher and tf_static topic published by it.

Using SLAM algorithms on a bagfile

$
0
0
Kinetic, Linux 16.04 **Goal** I've bagfiled an experiment of Gmapping with a turtlebot, and want to unleash the Cartographer algorithm on this bagfile. **Code** turtlebot_gmapping.launch, used in the experiment: turtlebot_cartographer.launch, used on the bagfile of the gmapping experiment: I only want to keep the experiment's sensory data, not its map-making bits, so that Cartographer can use this, and produce its own map. **Filter the gmapping experiment bagfile** I use `rosbag filter 2018-04-23-10-48-44.bag filter.bag "topic=='/joi nt_states' or topic=='/imu' or topic=='/odom' or topic=='/scan' or topic=='/rpms' or topic=='/tf_static'"` Now it should have all the things it needs. Sensory data; `/joint_states` which is a record of the wheels turning (and the transformation to them) and `tf_static`, the static transforms. I copy the `/tf_static` topic because, when I launch an algorithm with a bagfile, even though `robot_state_publisher` node exists, it doesn't do anything. It doesn't produce a `/tf_static` message, and so `/tf` only contains the /joint_states transformations. **Playing the bagfile, launching the Cartographer.launch** Normally, I'd do: > $ roslaunch thesis turtlebot_cartographer.launch play:=True bag:=filter.bag Now, the rqt_graph looks like this: ![image description](https://i.imgur.com/I9VNtCy.png) As you may notice: the /tf and /tf_static topics exist. Using a `$ rostopic echo /tf` and `.. /tf_static` confirm these aren't empty. /scan has messages, /joint_states has messages, /tf contains all the necessary transformations. Yet, when rviz opens: - Global status: error: Fixed Frame [map] does not exist - Map status: warn: no map received. And the tf_tree looks like this: ![image description](https://i.imgur.com/3siN4Jf.png) Note there's missing frames such as `map` --> `odom` --> `base_footprint` --> base_link which exists --> `imu_link` and some other child frames. Of course, no map is being produced. The algorithm gets all the inputs it needs, it just doesn't function. **Additional things I've found, summarised:** If I filter out everything again *without* `/tf_static`, the rqt_graph will look the same, except: `/tf_static` will be empty, `/tf` will be mostly empty (except for the `/joint_states` kinetic transforms), and `/robot_state_publisher` node won't do anything, just pretend to exist. If I filter the bagfile in the same way again, and use gmapping on it again (so that's: gmapping experiment -> bagfile -> filtered_bagfile -> gmapping), the terminal will say there's an error because "there's already a node called /robot_state_publisher". This thing is being created. Just doesn't output a `/tf_static`. **The questions** - Why does `/robot_state_publisher` not produce the `/tf_static` when using a bagfile? Why only in live experiments? - Why can't I get a Cartographer algorithm to work on a filtered bagfile from a Gmapping experiment? What am I missing? It has all the inputs it needs; all the sensory data, all the transforms, yet it produces nothing!

RVIZ visualize the data in the different plane. How to fix that?

$
0
0
I have set up an environment in gazebo with Kinect sensor. Sensor position and the joint is fine. But I visualize the `pointcloud` data in Rviz it is showing in XZ plane instead of XY plane. Take a look at the following image ![image description](/upfiles/15278316289435154.png). In the image above, it is capturing the image from the front in gazebo but showing on the top of the robot in Rviz. I tried to put the static transform between frames. `` But its conflicting with the transform published by `robot_state_publisher`. How to set the frame?

joint_state_publisher dies on remote machine

$
0
0
I've been trying to run robot_state_publisher and joint_state_publisher on a remote TX1 running Ubuntu 16.04 and ROS Kinetic. When running the node from a local launch file (manually ssh into the remote machine and run launch file), everything runs fine. However, when I try to run a launch file from my local machine, I get this error in my terminal: [192.168.1.237-0]: [robot_state_publisher-28] process has died [pid 26798, exit code 255, cmd /opt/ros/kinetic/lib/robot_state_publisher/state_publisher __name:=robot_state_publisher log:=/home/nvidia/.ros/log/038bfbd8-7afb-11e8-b9f2-ac220b57ae89/robot_state_publisher-28.log]. log file: /home/nvidia/.ros/log/038bfbd8-7afb-11e8-b9f2-ac220b57ae89/robot_state_publisher-28*.log [192.168.1.237-0]: [joint_state_publisher-27] process has died [pid 26780, exit code 1, cmd /opt/ros/kinetic/lib/joint_state_publisher/joint_state_publisher __name:=joint_state_publisher log:=/home/nvidia/.ros/log/038bfbd8-7afb-11e8-b9f2-ac220b57ae89/joint_state_publisher-27.log]. log file: /home/nvidia/.ros/log/038bfbd8-7afb-11e8-b9f2-ac220b57ae89/joint_state_publisher-27*.log How can I fix this? Here's my launch file: Here are the outputs in from the log files: joint_state_publisher: Traceback (most recent call last): File "/home/nvidia/catkin_ws/src/joint_state_publisher/joint_state_publisher/joint_state_publisher", line 474, in jsp = JointStatePublisher() File "/home/nvidia/catkin_ws/src/joint_state_publisher/joint_state_publisher/joint_state_publisher", line 149, in __init__ robot = xml.dom.minidom.parseString(description) File "/usr/lib/python2.7/xml/dom/minidom.py", line 1928, in parseString return expatbuilder.parseString(string) File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 940, in parseString return builder.parseString(string) File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 223, in parseString parser.Parse(string, True) TypeError: Parse() argument 1 must be string or read-only buffer, not None robot_state_publisher: [ERROR] [1530379066.805335879]: Could not find parameter robot_description on parameter server

Tf transform base_footprint base_link not working

$
0
0
Hi, I am working with a Kuka robot. When I launch youbot drivers everything works right and I can control platform movement with a remote joystick. But, when I execute: rosrun tf tf_echo base_link base_footprint Seems like tf transformation from base_footprint to base_link is not working as parameters do not change when platform moves (they remain 0.000 0.000 0.000 1.000). The package used for publishing robot state is "robot_state_publisher". Tf tree is like follows: odom -> base_footprint -> base_link -> ... Tf transformations between odom and base_footprint are working well. So, I tried to run a static transform publisher executing: rosrun tf static_transform_publisher 0 0 -0.5 0 0 0 base_footprint base_link 100 But it does not work. Although, if I add the Tf in Rviz, it can be seen base_link axis constantly moving (blinking) from its original position to a position -0.5 below. So, I do not know what is happening. Maybe the problem is that there are two publications of tf at the same time. In that case, I would like to know how could I delete or modify one.

Controlling two robots: please help me get started (Action client not connected: /follow_joint_trajectory)

$
0
0
**edit ---** [as of four years ago](https://groups.google.com/forum/#!topic/moveit-users/NZfk2PfnxWM) there was apparently no way to use MoveIt! with multiple robots, other than to combine them into a single URDF and treat them as one robot. This could work for me but then I guess the joints on the two robots would have to have different names for purposes of the controller? **initial content:** As an early attempt at simultaneously using two UR10s in a Gazebo simulation (and afterwards in the lab) I first modified the `universal_robot package files ur10.launch` and `ur10_moveit_planning_execution.launch` to use my own robot xacro (which at this stage is pretty much the same as `ur10_joint_limited_robot.urdf.xacro`). There are two launch files to get this simulation running and have MoveIt! operational. This initial step is working well. The next step in my plan for using two robots was to employ the `group` tag around this robot and around the `moveit_config/launch/move_group.launch` include as shown here in the two launch files. Here is the second launch file: The first one works as expected but the second one yields [ WARN] [1532698585.718194685, 368.013000000]: Waiting for /follow_joint_trajectory to come up [ WARN] [1532698591.765929321, 374.013000000]: Waiting for /follow_joint_trajectory to come up [ERROR] [1532698597.822045680, 380.018000000]: Action client not connected: /follow_joint_trajectory The only modification between these files and the two that work fine is the addition of the `` tag. Here are two questions. Can you say what the problem is with MoveIt! and can you tell me if this will be a good approach for using a second robot? I'm thinking that there will be a problem with `robot_state_publisher` since `tf` does not end up in the "placer" namespace (the topic is just `/tf`).
Viewing all 72 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>