Setting up Navigation on my own Robot
Hello!
We are designing a three wheeled robot, with the front wheel which act both as traction and steering. For the Gazebo simulation we used the gazebo_ros_tricycle_drive.cpp library and everything worked fine with the right URDF, designed on the real model. On Rviz we had some issue but we solved it making some change to /odom
codes.
So the simulation proceeded perfectly, but now we would like to bring the model to the field and let it follow navigation's path and trajectory.
So now comes the problem: the gazebo_ros_tricycle_drive.cpp
library works only with gazebo, can I take the minimum code to really control the motor, no more just in simulation?
Here's a mental scheme I'm following:
I have to write a node, a sort of filter, that has the output of the navigation stack as input, so basically Twist type messages. Then it have to publish to the motor driver the encoder's set points, both for steering and traction, in agreement with the kinematics of the tricycle: so basically from linear x y and angular velocity, to traction wheel speed and angle position of the steering to maintain the circumference or straight line of the planned navigation trajectory. Finally I need to link the encoders read to the same inverse cinematic node to feed the /odom
in the navigation node.
Conclusions:
How can I write this kinematic node (base controller)? I mean, which are the nodes on which it will depend? Because the gazebo_ros_tricycle_drive.cpp
is very nested and hard to replicate..
I don't need a direct answer, just give me some advice because I'm feeling a bit lost..
Thank you so much!