transform from map to base_link
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)
- One question is now a bit widely asked: How should i go on with setting up navigation stack in general?
- 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...
- 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...
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.