Team-Isaac-Polito / reseq_ros2

High-level ROS2 code to control the ReseQ robot
GNU General Public License v3.0
0 stars 0 forks source link

Joint State publisher #32

Closed luca-byte closed 3 months ago

luca-byte commented 4 months ago

closes #18

luca-byte commented 4 months ago

The velocity joints published are not used by the robot_state_publisher, so the wheels are detached. To obtain the wheels position we could write our own simple calculation or use the ROS2 controllers, which are also able to calculate odometry on their own. I suggest the second option

luca-byte commented 4 months ago

The positions of the joints however are working correctly

luca-byte commented 4 months ago

Now also the arm positions are working

luca-byte commented 4 months ago

While documenting on Outline I changed some parameters that were not completely correct. Moreover I noticed that the signs in the end effector update are correct with the current axis definitions, but after LC will complete and modify the arm, they will no longer be. In the docs the signs drawn are the ones that should be correct then

GBergatto commented 4 months ago

I have created both front and back "control wheels" following the same approach as for the actual wheels. However, I'm not sure this is the right approach. The front and back wheel on the same side are connected together by the track. Moreover, only the back ones have power. So, having a controller for each wheel isn't really useful. Even if we were to keep them, though, the command interface of the front controller would have to be removed.

Agevar has been built by modeling each track with a single wheel placed in the middle of it. Shouldn't we take the same approach?

luca-byte commented 4 months ago

~Well, since it is the same controller that deals with both the wheels (as in the Gazebo branch) it shouldn't be a problem. It will not be a controller for each wheel but one for each module. That controller (Differential controller) will be able to set the same velocity to the aligned wheels~

EDIT: Actually by looking at the gazebo branch code, I am starting to have some doubts about that implementation, since the calculations of agevar are ignored and the differential controller is doing the same type of calculations. I think that we should use some simpler controllers that only calculate the position of the wheel from its velocity. This value should be true (excluding sliding motions we are not interested in) and should not interfere with agevar. It should be a simple velocity controller for each wheel (or one which deals with all of them, [I do not know the syntax of controllers])

Looking at the code however I think that the error of VSCode is due to the fact that you defined the joint control properties outside the ros2_control block (see here)

luca-byte commented 4 months ago

Now the arm is working correctly in RVIZ

luca-byte commented 3 months ago

I haven't implemented the YAML printer to generate reseq_controllers.yaml dynamically, but I think we could tackle that separately as it could also be extended to reduce the number of reseq_mkX_Xcan config files.

In addition, it could be worth adding a LaunchArgument to selectively launch some nodes (for example, a "testing" flag that disables the realsense node and starts FakeRobotFeedback). We can discuss this in tomorrow's meeting.

Yes, we definitely need to discuss more about how to manage the launch file(s) and the yaml files since they are becoming more and more confusing.

About the tests we can definitely do that or even consider to setup ROS tests (maybe only for some things) since that would be the overall better choice for tests. About the RealSense we should look into the ROSBAG files which we could start if we do not have the RealSense to emulate it.