I have been trying to get one of my SES-V2 Arms to work with ROS2 now for the past 2 weeks. I followed along with the official readme: GitHub - Lynxmotion/LSS-ROS2-Arms
I have no Problem using the robot with the flowarm application and i am sure i configured the arms with proper baudrate etc. in the config program. When i build everything on my focal fossa ubuntu as described, the simulation starts properly and i can choose a movement group as well as a motion planner, but i am pretty sure that communication with the servos does not work properly, because they dont light up dark blue as described.
I installed everything on 3 different machines, so im sure it is not a hardware issue on my side. Rather i feel like a communication package is missing in the official github repo, that i might have missed from somewhere else: GitHub - Lynxmotion/LSS-ROS2-Arms
Summary:
-Simulation works
-rviz properly displays robotarm
-proper robot config and usb serial connection is set up
-no communication to the servos
Starting >>> lss_ros2_control
--- stderr: lss_ros2_control
Cloning into 'lynxmotion-lss'...
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Cloning into 'lynxmotion-lss'...
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Cloning into 'lynxmotion-lss'...
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
CMake Error at /home/robotpi/ros2_ws/src/build/lss_ros2_control/lynxmotion-lss/tmp/lynxmotion-lss-gitclone.cmake:31 (message):
Failed to clone repository:
'[email protected]:lynxmotionbeta/AlternativeLSS.git'
make[2]: *** [CMakeFiles/lynxmotion-lss.dir/build.make:91: lynxmotion-lss/src/lynxmotion-lss-stamp/lynxmotion-lss-download] Error 1
make[1]: *** [CMakeFiles/Makefile2:134: CMakeFiles/lynxmotion-lss.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed <<< lss_ros2_control [4.91s, exited with code 2]
Summary: 0 packages finished [5.29s]
1 package failed: lss_ros2_control
1 package had stderr output: lss_ros2_control
robotpi@robotpi:~/ros2_ws/src$
Take a look at the LSS adapter and ensure the three-way switch is set correctly to USB:
Can you also confirm the 12V wall adapter is connected and powered ON, and the drivers for the FTDI USB to serial communication are installed correctly (indeed, if you understand how to use ROS, these are likely very basic, but worth asking just in case).
Did you go through the procedure of assigning unique IDs to each servo (suggested via LSS Config), which match the guide?
Last, although a dumb question - can you ensure the USB cable you’re using is not power only and has the data line populated?
I currently have two 4DOF Arms to work with, that i recieved from my university, they dont have a ADA Board on them, but a direkt connector to power and FTDI USB. Maybe that already explains the issue and i should order a Board, could that be the case?
As for the configuration, i assigned the servo IDs as described and set the baudrate accordingly, the arms work flawless with LSS Flowarm on windows, so i am quite sure the hardware setup is proper.
The FTDI USB connection is labeled as up on both machines i built on, so that should not be the issue. Maybe i really just do need a ADA Board? I just assumed building the project would be possible without it, since the arm is already controllable with the windows applications you provide.
Normally the 4DoF include an LSS Adapter, so not sure why you didn’t receive it / them?
If you’re using different electronics, there are a few things to consider like power, common ground, ensuring Tx and RX are correct, the correct drivers are installed etc. One LSS adapter can be used with two arms, unless the power draw is high, at which point you might either use two adapters and two power supplies, or an additional LSS Power Distribution Board which allows you to add a second 12V power supply for part of the servo bus.
When i run “ros2 launch lss_arm_moveit real_arm_control.launch.py dof:=4” on my machine, while RVIZ is starting, the servos change their LEDcolor to red and RVIZ launches anyway with the correct motion groups etc…
When i use the motion planner in RVIZ and activate external communication, nothing happens with the Real robot when planning and executing a motion
I’m not sure what to check next so any help would be much appreciated.
Here’s the current servo config
and the console output when i run the command for the real robot.py
robotpi@robotpi-ThinkPad-T580:~/ros2_ws$ ros2 launch lss_arm_moveit real_arm_control.launch.py dof:=4
[INFO] [launch]: All log files can be found below /home/robotpi/.ros/log/2025-03-06-02-00-21-209389-robotpi-ThinkPad-T580-6237
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [robot_state_publisher-1]: process started with pid [6245]
[INFO] [ros2_control_node-2]: process started with pid [6247]
[INFO] [move_group-3]: process started with pid [6249]
[INFO] [rviz2-4]: process started with pid [6251]
[INFO] [spawner-5]: process started with pid [6254]
[INFO] [spawner-6]: process started with pid [6257]
[INFO] [spawner-7]: process started with pid [6273]
[INFO] [spawner-8]: process started with pid [6275]
[robot_state_publisher-1] Link lss_arm_link_0 had 1 children
[robot_state_publisher-1] Link lss_arm_link_1 had 1 children
[robot_state_publisher-1] Link lss_arm_link_2 had 1 children
[robot_state_publisher-1] Link lss_arm_link_3 had 1 children
[robot_state_publisher-1] Link lss_arm_link_4 had 3 children
[robot_state_publisher-1] Link lss_arm_ee had 0 children
[robot_state_publisher-1] Link lss_arm_finger_l had 0 children
[robot_state_publisher-1] Link lss_arm_finger_r had 0 children
[move_group-3] Link lss_arm_link_0 had 1 children
[move_group-3] Link lss_arm_link_1 had 1 children
[move_group-3] Link lss_arm_link_2 had 1 children
[move_group-3] Link lss_arm_link_3 had 1 children
[move_group-3] Link lss_arm_link_4 had 3 children
[move_group-3] Link lss_arm_ee had 0 children
[move_group-3] Link lss_arm_finger_l had 0 children
[move_group-3] Link lss_arm_finger_r had 0 children
[move_group-3] [WARN] [1741222823.255111359] [moveit.ros.occupancy_map_monitor.middleware_handle]: Resolution not specified for Octomap. Assuming resolution = 0.1 instead
[move_group-3] [ERROR] [1741222823.255204410] [moveit.ros.occupancy_map_monitor.middleware_handle]: No 3D sensor plugin(s) defined for octomap updates
[INFO] [spawner-5]: process has finished cleanly [pid 6254]
[INFO] [spawner-6]: process has finished cleanly [pid 6257]
[rviz2-4] Warning: class_loader.impl: SEVERE WARNING!!! A namespace collision has occured with plugin factory for class rviz_default_plugins::displays::InteractiveMarkerDisplay. New factory will OVERWRITE existing one. This situation occurs when libraries containing plugins are directly linked against an executable (the one running right now generating this message). Please separate plugins out into their own library or just don't link against the library and use either class_loader::ClassLoader/MultiLibraryClassLoader to open.
[rviz2-4] at line 253 in /opt/ros/galactic/include/class_loader/class_loader_core.hpp
[INFO] [spawner-7]: process has finished cleanly [pid 6273]
[INFO] [spawner-8]: process has finished cleanly [pid 6275]
[rviz2-4] [ERROR] [1741222827.215366724] [moveit_ros_visualization.motion_planning_frame]: Action server: /recognize_objects not available
[rviz2-4] Link lss_arm_link_0 had 1 children
[rviz2-4] Link lss_arm_link_1 had 1 children
[rviz2-4] Link lss_arm_link_2 had 1 children
[rviz2-4] Link lss_arm_link_3 had 1 children
[rviz2-4] Link lss_arm_link_4 had 3 children
[rviz2-4] Link lss_arm_ee had 0 children
[rviz2-4] Link lss_arm_finger_l had 0 children
[rviz2-4] Link lss_arm_finger_r had 0 children
[rviz2-4] Link lss_arm_link_0 had 1 children
[rviz2-4] Link lss_arm_link_1 had 1 children
[rviz2-4] Link lss_arm_link_2 had 1 children
[rviz2-4] Link lss_arm_link_3 had 1 children
[rviz2-4] Link lss_arm_link_4 had 3 children
[rviz2-4] Link lss_arm_ee had 0 children
[rviz2-4] Link lss_arm_finger_l had 0 children
[rviz2-4] Link lss_arm_finger_r had 0 children
[INFO] [rviz2-4]: process has finished cleanly [pid 6251]
If the servos light up red it means that they just received a broadcast command but not the individual commands because they should light up blue after that. The problem could be that you have a firmware version that does not support group commands, could you check which firmware version you have? It should be 370.
So the firmware update and the additional package fixed the communication issue. The servos now light up blue when running the real_robot.py and i have a representation in rviz that moves with the robot, as i move it in real life.
Therefore i thought commincation is set, but when i choose planner, select the arm movement group and try to plan&execute a movement, the real robot does not move. What could be the issue?
Here’s the console output when doing so:
robotpi@robotpi-ThinkPad-T580:~/ros2_ws/src/LSS-ROS2-Arms$ ros2 launch lss_arm_moveit real_arm_control.launch.py dof:=4
[INFO] [launch]: All log files can be found below /home/robotpi/.ros/log/2025-03-18-15-09-55-920174-robotpi-ThinkPad-T580-32142
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [robot_state_publisher-1]: process started with pid [32150]
[INFO] [ros2_control_node-2]: process started with pid [32152]
[INFO] [move_group-3]: process started with pid [32154]
[INFO] [rviz2-4]: process started with pid [32156]
[INFO] [spawner-5]: process started with pid [32160]
[INFO] [spawner-6]: process started with pid [32162]
[INFO] [spawner-7]: process started with pid [32172]
[INFO] [spawner-8]: process started with pid [32180]
[robot_state_publisher-1] Link lss_arm_link_0 had 1 children
[robot_state_publisher-1] Link lss_arm_link_1 had 1 children
[robot_state_publisher-1] Link lss_arm_link_2 had 1 children
[robot_state_publisher-1] Link lss_arm_link_3 had 1 children
[robot_state_publisher-1] Link lss_arm_link_4 had 3 children
[robot_state_publisher-1] Link lss_arm_ee had 0 children
[robot_state_publisher-1] Link lss_arm_finger_l had 0 children
[robot_state_publisher-1] Link lss_arm_finger_r had 0 children
[move_group-3] Link lss_arm_link_0 had 1 children
[move_group-3] Link lss_arm_link_1 had 1 children
[move_group-3] Link lss_arm_link_2 had 1 children
[move_group-3] Link lss_arm_link_3 had 1 children
[move_group-3] Link lss_arm_link_4 had 3 children
[move_group-3] Link lss_arm_ee had 0 children
[move_group-3] Link lss_arm_finger_l had 0 children
[move_group-3] Link lss_arm_finger_r had 0 children
[move_group-3] [WARN] [1742306998.038332618] [moveit.ros.occupancy_map_monitor.middleware_handle]: Resolution not specified for Octomap. Assuming resolution = 0.1 instead
[move_group-3] [ERROR] [1742306998.038423218] [moveit.ros.occupancy_map_monitor.middleware_handle]: No 3D sensor plugin(s) defined for octomap updates
[INFO] [spawner-6]: process has finished cleanly [pid 32162]
[INFO] [spawner-7]: process has finished cleanly [pid 32172]
[INFO] [spawner-8]: process has finished cleanly [pid 32180]
[rviz2-4] Warning: class_loader.impl: SEVERE WARNING!!! A namespace collision has occured with plugin factory for class rviz_default_plugins::displays::InteractiveMarkerDisplay. New factory will OVERWRITE existing one. This situation occurs when libraries containing plugins are directly linked against an executable (the one running right now generating this message). Please separate plugins out into their own library or just don't link against the library and use either class_loader::ClassLoader/MultiLibraryClassLoader to open.
[rviz2-4] at line 253 in /opt/ros/galactic/include/class_loader/class_loader_core.hpp
[INFO] [spawner-5]: process has finished cleanly [pid 32160]
[rviz2-4] [ERROR] [1742307002.013598282] [moveit_ros_visualization.motion_planning_frame]: Action server: /recognize_objects not available
[rviz2-4] Link lss_arm_link_0 had 1 children
[rviz2-4] Link lss_arm_link_1 had 1 children
[rviz2-4] Link lss_arm_link_2 had 1 children
[rviz2-4] Link lss_arm_link_3 had 1 children
[rviz2-4] Link lss_arm_link_4 had 3 children
[rviz2-4] Link lss_arm_ee had 0 children
[rviz2-4] Link lss_arm_finger_l had 0 children
[rviz2-4] Link lss_arm_finger_r had 0 children
[rviz2-4] Link lss_arm_link_0 had 1 children
[rviz2-4] Link lss_arm_link_1 had 1 children
[rviz2-4] Link lss_arm_link_2 had 1 children
[rviz2-4] Link lss_arm_link_3 had 1 children
[rviz2-4] Link lss_arm_link_4 had 3 children
[rviz2-4] Link lss_arm_ee had 0 children
[rviz2-4] Link lss_arm_finger_l had 0 children
[rviz2-4] Link lss_arm_finger_r had 0 children
[move_group-3] [ERROR] [1742307040.566077525] [ompl]: /tmp/binarydeb/ros-galactic-ompl-1.5.2/src/ompl/base/src/StateSpace.cpp:729 - No default projection is set. Perhaps setup() needs to be called
[move_group-3] [ERROR] [1742307040.569643480] [moveit.ompl_planning.planning_context_manager]: OMPL encountered an error: No projection evaluator specified
[rviz2-4] [ERROR] [1742307040.977749533] [move_group_interface]: MoveGroupInterface::move() failed or timeout reached
[move_group-3] [ERROR] [1742307056.467418601] [ompl]: /tmp/binarydeb/ros-galactic-ompl-1.5.2/src/ompl/base/src/StateSpace.cpp:729 - No default projection is set. Perhaps setup() needs to be called
[move_group-3] [ERROR] [1742307056.467741461] [moveit.ompl_planning.planning_context_manager]: OMPL encountered an error: No projection evaluator specified
[rviz2-4] [ERROR] [1742307057.002872768] [move_group_interface]: MoveGroupInterface::move() failed or timeout reached
[move_group-3] [WARN] [1742307064.069127888] [moveit_ros.trajectory_execution_manager]: Controller handle gripper_action_controller reports status ABORTED
[rviz2-4] [ERROR] [1742307064.472761093] [move_group_interface]: MoveGroupInterface::move() failed or timeout reached
[move_group-3] [WARN] [1742307078.137582934] [ompl]: /tmp/binarydeb/ros-galactic-ompl-1.5.2/src/ompl/tools/multiplan/src/ParallelPlan.cpp:138 - ParallelPlan::solve(): Unable to find solution by any of the threads in 5.000852 seconds
[rviz2-4] [ERROR] [1742307078.527201033] [move_group_interface]: MoveGroupInterface::move() failed or timeout reached
[move_group-3] [WARN] [1742307092.703537306] [ompl]: /tmp/binarydeb/ros-galactic-ompl-1.5.2/src/ompl/tools/multiplan/src/ParallelPlan.cpp:138 - ParallelPlan::solve(): Unable to find solution by any of the threads in 4.855218 seconds
[rviz2-4] [ERROR] [1742307093.025229628] [move_group_interface]: MoveGroupInterface::move() failed or timeout reached
[rviz2-4] [WARN] [1742307100.524158009] [rcl.logging_rosout]: Publisher already registered for provided node name. If this is due to multiple nodes with the same name then all logs for that logger name will go out over the existing publisher. As soon as any node with that name is destructed it will unregister the publisher, preventing any further logs for that name from being published on the rosout topic.