transform from map to base_link

asked 2015-11-01 08:09:01 -0500

fabian77 gravatar image

Hi, i am still working as hobbyist on my tracked self-made robot using ROS as middleware and am a bit confused at the moment.

What i have managed so far:

  • There's a base_controller node subscribing to /cmd_vel and publishing wheelencoder- data in a custom message. Depending on /cmd_vel the robot moves around.
  • i can teleop my robot with a gamepad connected to a workstation using joystick_driver/ joy-Topics and computing that joy-Messages into /cmd_vel
  • i have a node base_odometry which computes odometry from wheel-encoders and publishes to the Topic /odom (Pose and Velocities) and to /tf (the transform from frame odom to frame base_link)
  • there is a package with an URDF, describing my robot with the frame base_link as parent
  • that way the robot is simulated in rviz and i can see the model moving according to the commands i send. the base_link is moving relatively to the odom link. so everything seems correct so far

The tf tree at the moment is the following:

odom -> base_link -> all other links from the urdf (as wheels and so on, which are more for visualizing then really needed)

  1. One question is now a bit widely asked: How should i go on with setting up navigation stack in general?
  2. One Idea was to set up a node that publishes the map link. And as i read in REP 105, "The transform from map to base_link is computed by a localization component". As i understood this component should first receive the transform from odom to base_link (which is published from my node base_odometry), and uses this information to broadcast the transform from map to odom. Is there a premade ROS package already released for that task? Or do i have to make it myself and is that necessary at all and i am on the wrong track right now...
  3. Next thing i am trying on at the moment is setting up package robot_pose_ekf, although i have no really use at the moment, lacking of other sensor data beneath wheel-encoders. But the idea was to set up a gps sensor in the future. But it's really confusing, because there's a new frame base_footprint. Should i just put that link into my urdf as parent from base_link? But as i do so, that's messing up my current setup for rviz and visualization in rviz isnt't working right anymore because of missing transforms from base_footprint to odom. Should i implement that transform in my node base_odometry instead of transform from odom to base_link or as a separate transform there or elsewhere?

As you and i see, i think i have reached a border from which on a hobbyist like me with no academic backround will have a hard way on going on... maybe someone could have a look at my coderepository on Github and have a look and giving tips how i should go on...

edit retag flag offensive close merge delete


to Q.3: The way i implemented base_footprint: I added base_footprint as parent link of base_link in the URDF now and in my base_odometry i publish the transform from odom to base_footprint now instead of base_link. Visualization rviz seems ok now again. But I don't know, if it's the recommended way.

fabian77 gravatar image fabian77  ( 2015-11-01 09:13:16 -0500 )edit