Closed luca-byte closed 3 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
The positions of the joints however are working correctly
Now also the arm positions are working
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
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?
~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)
Now the arm is working correctly in RVIZ
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 ofreseq_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.
closes #18