Hi, Dexter, thanks again for your ROS and MoveIt packages. After taking a quick ROS course (ROS in 5 days from the Construct (it took more than 5 days 🙄) to get up to speed on the details of ROS, I started to implement your work on my Windows 10 PC running WSL (Windows Subsystem for Linux version 2). I am using ROS Melodic with Ubuntu 18.0.04. Before attempting to control the actual AR3 I set up everything to control the simulation on Gazebo and RViz. This also gave me an opportunity to learn more about MoveIt and Gazebo.
I was able to load and run your packages without much difficulty; my lack of experience with ROS and Linux made the effort take longer, but your instructions and files were perfect. Using the Move Group Python Interface I am able to set poses and joints in Python control programs to control the AR3 in Gazebo (a heads-up to others embarking on a ROS path: poses are described in quaternions, not Euler angles). Again, thank you very much for your contribution.
Unfortunately, when it came time to set up the control of the real AR3, I ran into some problems. I followed your instructions for setup (COM3, 115200 in the hardware_driver.yaml file), and loaded the baseline_with_ARCS Teensy sketch into the Teensy 3.5. I then tested the new sketch by running ARCS, which worked fine. This seemed to validate the COM3 serial connection to the Teensy. I killed ARCS and the Arduino IDE so there wouldn't be a conflict for COM3.
I then followed your instructions for controlling the real-world arm with MoveIt. I downloaded your updated ar3_hardware_bringup.launch file from GitHub and replaced the old one, and launched the file using roslaunch ar3_hardware_interface ar3_hardware_bringup.launch use_existing_calibrations:=true. I got the following errors (warnings):
on the stdout:
-- [WARN] Failed to connect to serial port
-- [rosout][WARNING] 2021-04-29 23:02:47,719: wait_for_service(/controller_manager/load_controller): failed to contact, will keep trying
from the master.log (I think this shows that the com parameters were read):
-- [rosmaster.master][INFO] 2021-04-29 23:02:47,328: +PARAM [/ar3/hardware_driver/baudrate] by /roslaunch
[rosmaster.master][INFO] 2021-04-29 23:02:47,328: +PARAM [/ar3/hardware_driver/serial_port] by /roslaunch
from the controller_spawner-2 log:
[rosout][WARNING] 2021-04-29 23:03:07,783: wait_for_service(/controller_manager/load_controller): failed to contact, will keep trying
[rosout][WARNING] 2021-04-29 23:03:17,807: Controller Spawner couldn't find the expected controller_manager ROS interface.
Thinking that "COM3" for the serial port didn't have any meaning in a Linux shell I tried replacing COM3 with ttyS3 and /dev/ttyS3 because I read on the web that with Windows WSL COMn gets mapped to /dev/ttySn on Linux. This didn't make any difference, however.
Anyway, I'd appreciate any insight you may have into this trouble, or even if the "failed to connect to serial port" is the cause of the "controller spawner couldn't find the expected controller_manager ROS interface." I don't think I understand these ROS software complexities well enough to troubleshoot much further.
Thanks, in advance,
Ray Kimber