Ask Your Question

Sam Bishop's profile - activity

2021-06-15 05:40:08 -0500 received badge  Favorite Question (source)
2020-03-20 16:04:57 -0500 received badge  Great Question (source)
2019-04-02 22:03:30 -0500 received badge  Favorite Question (source)
2019-03-26 08:44:05 -0500 received badge  Good Question (source)
2018-05-25 06:59:03 -0500 received badge  Nice Question (source)
2018-02-27 16:58:50 -0500 received badge  Nice Answer (source)
2017-09-27 05:55:00 -0500 marked best answer map frame from robot_localization

I am trying to create the standard tf frames specified in REP 105 (map, odom, and base_link) using the robot_localization package. I only have GPS and IMU sensors available. So far I have been able to create the odom and base_link frames, but I am having trouble creating the map frame.

This is my launch file:

  <node pkg="robot_localization" type="ukf_localization_node"
     name="ukf_localization" clear_params="true" ns="ackermann_vehicle">

    <param name="frequency" value="30"/>
    <param name="sensor_timeout" value="0.1"/>
    <param name="two_d_mode" value="false"/>
    <param name="map_frame" value="map"/>
    <param name="odom_frame" value="odom"/>
    <param name="base_link_frame" value="base_link"/>
    <param name="world_frame" value="map"/>

    <param name="imu0" value="imu/data_compass"/>
    <rosparam param="imu0_config">[false, false, false,
                                   true,  true,  true,
                                   true,  true,  true,
                                   true,  true,  true,
                                   true,  true,  true]</rosparam>
    <param name="imu0_differential" value="true"/>
    <param name="imu0_remove_gravitational_acceleration" value="true"/>

    <param name="gps0" value="odometry/gps"/>
    <rosparam param="gps0_config">[true,  true,  true,
                                   false, false, false,
                                   false, false, false,
                                   false, false, false,
                                   false, false, false]</rosparam>
    <param name="gps0_differential" value="false"/>

  <node pkg="robot_localization" type="navsat_transform_node"
      name="navsat_transform_node" ns="ackermann_vehicle" respawn="true" output="screen">
    <param name="magnetic_declination_radians" value="0"/>
    <remap from="imu/data" to="imu/data_compass" />
    <remap from="gps/fix" to="navsat/fix" />

If I set the world_frame parameter to "odom", then things seem to work but I only have odom and base_link frames. If I set the world_frame to be "map", like above, then I get this error message: Could not obtain transform from odom->base_link.

Note that I am new to ROS, so my trouble may be conceptual. I would appreciate any help someone is willing to offer. Thank you!

2017-05-04 07:52:29 -0500 received badge  Good Question (source)
2016-11-27 20:12:00 -0500 marked best answer ros_control questions

I have been studying ros_control and how to use it for a while now, but I still have a few questions. I have made a list of the questions I have been unable to answer, and I would appreciate it someone could help me find answers.

  1. The velocity and position controllers are listed twice here: . (Both are under "effort_controllers", and then each is under their own section.) Is that just a typo, or am I missing something?

  2. I was not planning to have sensors that could feed a JointStateInterface implementation. (My robot is car-like, and I believe that higher-level feedback from IMU and GPS sensors will be sufficient.) I'm thinking that I will write my hardware interface implementation to just echo the set point back as the current state. Should that work? Has anyone else done that before?

  3. I have had a difficult time understanding the role of transmissions with regards to Gazebo. The Gazebo documentation seems to suggest that a transmission is required for each joint. I think it's because the Gazebo plugin is unable to read the YAML file used by ROS controller manager to determine whether to use a velocity, effort, or position controller. Do I have that right?

Thanks, Sam

2016-04-06 08:05:07 -0500 received badge  Famous Question (source)
2015-12-22 01:21:07 -0500 received badge  Notable Question (source)
2015-12-17 17:36:47 -0500 commented answer no window or output from rviz

I'm sorry, I should have made that clear. Yes, I uninstalled the theme and used the default. It's working now. Thanks again!

2015-12-17 17:30:26 -0500 received badge  Popular Question (source)
2015-12-17 14:32:28 -0500 received badge  Commentator
2015-12-17 14:32:28 -0500 commented answer no window or output from rviz

Thank you! Using gdb I found that it was getting stuck loading the Oxygen theme for GTK, during the creation of the QApplication object.

2015-12-17 12:11:28 -0500 asked a question no window or output from rviz

I've been running rviz (as well as the rest of the ROS stack) just fine on one computer, but now I can't get rviz to run on a second computer. Unfortunately, I don't get any output from rviz on the second computer, so I am having trouble figuring out how to debug it.

The second computer is pretty vanilla. (It's a 64-bit Intel PC running Ubuntu 14.04 and Indigo.) If I run rosrun rviz rviz after starting roscore, I get absolutely nothing. It just hangs, without output. (I've also checked my .ros/log files.) If I run without starting roscore, I get this

[ INFO] [1450375110.690702198]: rviz version 1.11.10
[ INFO] [1450375110.690762620]: compiled against OGRE version 1.8.1 (Byatis)

and a dialog box telling me that roscore isn't running.

I've tried the LIBGL_ALWAYS_SOFTWARE=1 environment-variable trick from the rviz troubleshooting page, and that didn't help.

The only relevant differences I can think of between the two computers is that the second computer has two monitors and an AMD video card, versus a single monitor and Intel integrated graphics. Any help would be appreciated.

2015-12-17 04:34:45 -0500 marked best answer purpose of roslaunch_add_file_check()?

After working through most of the ROS tutorials, I have started studying some of the code for the robots listed on the wiki. I am trying to become a "fluent" ROS developer. To that end, I am trying to figure out what "roslaunch_add_file_check(launch)" does in this CMakeLists.txt file: . (Google seems to indicate that roslaunch_add_file_check() is related to testing, but that package does not have any tests.) What does that line do, and what is its purpose?

Also, is there a general way to find out about ROS-specific CMake functions like that one? I am sure I will have other questions like this in the future. Thank you!

2015-12-10 21:16:12 -0500 received badge  Famous Question (source)
2015-12-08 21:20:51 -0500 received badge  Citizen Patrol (source)
2015-12-07 10:37:21 -0500 received badge  Popular Question (source)
2015-12-06 23:43:54 -0500 asked a question topics for control?

There have been a few questions asked before about when to use topics, services, or actions, but I haven't seen this particular question asked. My question is about which to use for "immediate" control messages--not "move here" messages that should obviously be action messages, but "do X, now".

The wiki currently says that topics are for "data [that] might be published and subscribed at any time independent of any senders/receivers. Many to many connection[s]". So they don't sound like a good fit.

Service messages initially look promising. The wiki says that they "should be used for remote procedure calls that terminate quickly" and not for "longer running processes", but it goes on to say that "they should never change ... state".

And finally, action messages seem to be overkill, as these control messages are intended to take effect immediately, so they couldn't be preempted.

It looks like topics are used in practice. The control code for "normal" robots seems to use twist messages over topics to move the robot base, and the example code I've seen for Ackermann-style robots (like I'm working with) also uses topics. Is my conclusion correct? And if so, why are topics used like this?

I've switched from service messages to topic messages for the code I'm working on, assuming that there must be a good reason that topics have been used by others. But part of why I'm asking is so that I can update the wiki, so that others won't make the same mistake I made and start down the wrong path.

2015-11-30 10:59:39 -0500 received badge  Notable Question (source)
2015-11-30 09:01:35 -0500 marked best answer ros_control packages missing from Jade

I've just updated to Jade, and I'm having trouble running a Gazebo simulation using my previously working packages.

Right now I'm focused on this error:

File "/home/sam/aav-ros-car/aav_car_ws/src/aav_description/nodes/", line 125, in <module>
    from controller_manager_msgs.srv import ListControllers
ImportError: No module named controller_manager_msgs.srv

I am seeing this too, though I think it's unrelated:

/opt/ros/jade/lib/gazebo_ros/gzclient: 17: .: Can't open /usr/share/gazebo//
/opt/ros/jade/lib/gazebo_ros/gzserver: 22: .: Can't open /usr/share/gazebo//

It looks like I am missing the service message definitions for ros_control, and that according to the wiki, this ought to be solved by sudo apt-get install ros-jade-ros-control ros-jade-ros-controllers. But that doesn't work either:

/opt/ros/jade$ sudo apt-get install ros-jade-ros-control ros-jade-ros-controllers
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package ros-jade-ros-control
E: Unable to locate package ros-jade-ros-controllers

This is on a standard 64-bit Intel system running Ubuntu 14.04. Here's the contents of my /etc/apt/sources.list.d/ros-latest.list:

deb trusty main

My system seems to otherwise be working fine.

2015-11-30 09:01:32 -0500 commented answer ros_control packages missing from Jade

Thank you so much! No, I hadnt' tried. It looks like the ros_control packages haven't been released for Jade yet. It hadn't occurred to me that a ROS release might not include such a critical set of packages. I assumed the fault was mine.