Open Persius48 opened 10 months ago
Invalid checksum [ros2_control_node-1] [ERROR] [1693755709.123338959] [VescHwInterface]: Out-of-sync with VESC, discarding 49 bytes. [ros2_control_node-1] [ERROR] [1693755709.128419540] [VescHwInterface]: Invalid end-of-frame character [ros2_control_node-1] [ERROR] [1693755709.128438065] [VescHwInterface]: Invalid payload length [ros2_control_node-1] [ERROR] [1693755709.128448735] [VescHwInterface]: Out-of-sync with VESC, discarding 21 bytes. [ros2_control_node-1] [ERROR] [1693755709.163161253] [VescHwInterface]: Invalid end-of-frame character [ros2_control_node-1] [ERROR] [1693755709.163192823] [VescHwInterface]: Out-of-sync with VESC, discarding 8 bytes. [ros2_control_node-1] [ERROR] [1693755709.203127802] [VescHwInterface]: Invalid end-of-frame character [ros2_control_node-1] [ERROR] [1693755709.203179020] [VescHwInterface]: Out-of-sync with VESC, unknown data leading valid frame. Discarding 1 bytes
Does this error log appear once or does it stream continuously?
If VESC works when there's only one but consistently shows such a log when there are two or more, I have seen similar behavior before. I don't have time for an in-depth investigation, but first, try adding VESC to the dialout
group in udev rules and then test it again.
Invalid checksum [ros2_control_node-1] [ERROR] [1693755709.123338959] [VescHwInterface]: Out-of-sync with VESC, discarding 49 bytes. [ros2_control_node-1] [ERROR] [1693755709.128419540] [VescHwInterface]: Invalid end-of-frame character [ros2_control_node-1] [ERROR] [1693755709.128438065] [VescHwInterface]: Invalid payload length [ros2_control_node-1] [ERROR] [1693755709.128448735] [VescHwInterface]: Out-of-sync with VESC, discarding 21 bytes. [ros2_control_node-1] [ERROR] [1693755709.163161253] [VescHwInterface]: Invalid end-of-frame character [ros2_control_node-1] [ERROR] [1693755709.163192823] [VescHwInterface]: Out-of-sync with VESC, discarding 8 bytes. [ros2_control_node-1] [ERROR] [1693755709.203127802] [VescHwInterface]: Invalid end-of-frame character [ros2_control_node-1] [ERROR] [1693755709.203179020] [VescHwInterface]: Out-of-sync with VESC, unknown data leading valid frame. Discarding 1 bytes
Does this error log appear once or does it stream continuously?
Yes, the error message is continuous.
If VESC works when there's only one but consistently shows such a log when there are two or more, I have seen similar behavior before. I don't have time for an in-depth investigation, but first, try adding VESC to the
dialout
group in udev rules and then test it again.
The VESCs were already in the dialout
group in udev and I added the current user in the dialout
group. The problems are persistent. One VESC connects, but two do not.
Is the problem solved?
We also tested two VESCs as a differential drive and did not observe similar issues. Regarding the advice to add the user to the dialout group, there was only a comment that it had been added, without any logs on how the udev rules were set. This is insufficient information for us to replicate the issue, so please provide more detailed information, logs, and settings that would allow us to reproduce the problem.
I am currently working on a project to make a four-wheeled differential drive robot using 4 VESCs with ROS2 as the means of communication. Two vesc will be masters and the rest two will be slaves. I used the vesc_hw_interface with humble-devel for one VESC and it was okay. but when I tried to use two VESCs with some modification in the ros2_control_xacro by including two hardware and two joints, there was an error like the following. I also want to add that I have been using vesc driver packages from f1tenth as it also has the IMU messages and have edited the codes in vesc_hw_interface accordingly to use that.
I tried using the controllers (joint_state_broadcaster and velocity_controller), which worked with a single VESC, launching it with two VESCs with two ros2_control tags including two separate actuator-type hardware. I also tried to change the velocity controller to diff_drive_controller and tried the same thing with two VESCs. But it fails every time. I am attaching the screenshot of my configuration and xacro file. Any suggestion will be really helpful.
This is the config file for the controller manager and xacro file for the resource manager that works with one vesc.
The xacro that works with one vesc
And these are what I tried.
Config file for controller manager with diff_drive_controller and joint_state_broadcaster
Xacro file for the resource manager with two vescs as actuators.