-
Notifications
You must be signed in to change notification settings - Fork 512
Description
Hi,
I am trying to create a new controller for the Turtlebot3 with the OpenManipulator-X. in ros2 Humble. I am using /cmd_vel for the turtlebot3 and /arm_controller/joint_trajectory for the OpenManipulator_X. However I am facing some issues.
First of all, when I launch Gazebo, it seems that the Turtlebot3 slightly moves, it does not stay in the same position.
Additionally the main issue is that I can't get the same simulations results regarding the position of both systems even if the conditions are the same. I have tried to put the same seed and change the friction of the wheel but it does not work. It seems that sometimes theta have a little bit of perturbation but I don't know how to fix it.
Any ideas? Thank you in advance.
This is the log:
ros2 launch turtlebot3_manipulati
on_gazebo gazebo.launch.py
[INFO] [launch]: All log files can be found below /root/.ros/log/2025-09-18-08-23-28-167390-ac9ea64ed5d4-63009
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [robot_state_publisher-1]: process started with pid [63019]
[INFO] [spawner-2]: process started with pid [63021]
[INFO] [gzserver-3]: process started with pid [63023]
[INFO] [gzclient-4]: process started with pid [63025]
[INFO] [spawn_entity.py-5]: process started with pid [63027]
[robot_state_publisher-1] 1758183808.781017 [42] robot_stat: selected interface "lo" is not multicast-capable: disabling multicast
[robot_state_publisher-1] [INFO] [1758183808.785756689] [robot_state_publisher]: got segment base_footprint
[robot_state_publisher-1] [INFO] [1758183808.785796818] [robot_state_publisher]: got segment base_link
[robot_state_publisher-1] [INFO] [1758183808.785802068] [robot_state_publisher]: got segment base_scan
[robot_state_publisher-1] [INFO] [1758183808.785805588] [robot_state_publisher]: got segment camera_link
[robot_state_publisher-1] [INFO] [1758183808.785808928] [robot_state_publisher]: got segment camera_rgb_frame
[robot_state_publisher-1] [INFO] [1758183808.785812168] [robot_state_publisher]: got segment camera_rgb_optical_frame
[robot_state_publisher-1] [INFO] [1758183808.785815658] [robot_state_publisher]: got segment caster_back_left_link
[robot_state_publisher-1] [INFO] [1758183808.785818958] [robot_state_publisher]: got segment caster_back_right_link
[robot_state_publisher-1] [INFO] [1758183808.785822138] [robot_state_publisher]: got segment dummy_mimic_fix
[robot_state_publisher-1] [INFO] [1758183808.785825488] [robot_state_publisher]: got segment end_effector_link
[robot_state_publisher-1] [INFO] [1758183808.785828598] [robot_state_publisher]: got segment gripper_left_link
[robot_state_publisher-1] [INFO] [1758183808.785831658] [robot_state_publisher]: got segment gripper_right_link
[robot_state_publisher-1] [INFO] [1758183808.785834778] [robot_state_publisher]: got segment imu_link
[robot_state_publisher-1] [INFO] [1758183808.785837888] [robot_state_publisher]: got segment link1
[robot_state_publisher-1] [INFO] [1758183808.785841148] [robot_state_publisher]: got segment link2
[robot_state_publisher-1] [INFO] [1758183808.785844158] [robot_state_publisher]: got segment link3
[robot_state_publisher-1] [INFO] [1758183808.785847118] [robot_state_publisher]: got segment link4
[robot_state_publisher-1] [INFO] [1758183808.785850088] [robot_state_publisher]: got segment link5
[robot_state_publisher-1] [INFO] [1758183808.785852968] [robot_state_publisher]: got segment wheel_left_link
[robot_state_publisher-1] [INFO] [1758183808.785856048] [robot_state_publisher]: got segment wheel_right_link
[spawn_entity.py-5] 1758183808.914959 [42] python3: selected interface "lo" is not multicast-capable: disabling multicast
[spawner-2] 1758183808.915590 [42] spawner: selected interface "lo" is not multicast-capable: disabling multicast
[gzserver-3] 1758183808.934263 [42] gzserver: selected interface "lo" is not multicast-capable: disabling multicast
[spawner-2] [INFO] [1758183808.943405044] [spawner_joint_state_broadcaster]: waiting for service /controller_manager/list_controllers to become available...
[spawn_entity.py-5] [INFO] [1758183808.949705018] [spawn_entity]: Spawn Entity started
[spawn_entity.py-5] [INFO] [1758183808.950005656] [spawn_entity]: Loading entity published on topic robot_description
[spawn_entity.py-5] [INFO] [1758183808.951267849] [spawn_entity]: Waiting for entity xml on robot_description
[spawn_entity.py-5] [INFO] [1758183808.953274367] [spawn_entity]: Waiting for service /spawn_entity, timeout = 30
[spawn_entity.py-5] [INFO] [1758183808.953521216] [spawn_entity]: Waiting for service /spawn_entity
[gzserver-3] ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
[gzserver-3] ALSA lib conf.c:5178:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
[gzserver-3] ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
[gzserver-3] ALSA lib conf.c:5178:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
[gzserver-3] ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
[gzserver-3] ALSA lib conf.c:5178:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
[gzserver-3] ALSA lib conf.c:5701:(snd_config_expand) Evaluate error: No such file or directory
[gzserver-3] ALSA lib pcm.c:2664:(snd_pcm_open_noupdate) Unknown PCM default
[gzserver-3] AL lib: (EE) ALCplaybackAlsa_open: Could not open playback device 'default': No such file or directory
[spawn_entity.py-5] [INFO] [1758183809.456592061] [spawn_entity]: Calling service /spawn_entity
[gzserver-3] [INFO] [1758183810.275977690] [camera_controller]: Publishing camera info to [/pi_camera/camera_info]
[spawn_entity.py-5] [INFO] [1758183810.337018214] [spawn_entity]: Spawn status: SpawnEntity: Successfully spawned entity [turtlebot3_manipulation_system]
[gzserver-3] [INFO] [1758183810.382192527] [diff_drive]: Wheel pair 1 separation set to [0.287000m]
[gzserver-3] [INFO] [1758183810.382224157] [diff_drive]: Wheel pair 1 diameter set to [0.066000m]
[gzserver-3] [INFO] [1758183810.382527825] [diff_drive]: Subscribed to [/cmd_vel]
[gzserver-3] [INFO] [1758183810.383157972] [diff_drive]: Advertise odometry on [/odom]
[gzserver-3] [INFO] [1758183810.383955557] [diff_drive]: Publishing odom transforms between [odom] and [base_footprint]
[gzserver-3] [INFO] [1758183810.392466009] [gazebo_ros2_control]: Loading gazebo_ros2_control plugin
[gzserver-3] [INFO] [1758183810.393657942] [gazebo_ros2_control]: Starting gazebo_ros2_control plugin in namespace: /
[gzserver-3] [INFO] [1758183810.393673522] [gazebo_ros2_control]: Starting gazebo_ros2_control plugin in ros 2 node: gazebo_ros2_control
[gzserver-3] [INFO] [1758183810.394442398] [gazebo_ros2_control]: connected to service!! robot_state_publisher
[gzserver-3] [INFO] [1758183810.394895265] [gazebo_ros2_control]: Received urdf from param server, parsing...
[gzserver-3] [INFO] [1758183810.394917725] [gazebo_ros2_control]: Loading parameter files /workspaces/mobile_manipulator_ws/install/turtlebot3_manipulation_gazebo/share/turtlebot3_manipulation_gazebo/config/gazebo_controller_manager.yaml
[gzserver-3] [INFO] [1758183810.400891041] [gazebo_ros2_control]: Loading joint: wheel_left_joint
[gzserver-3] [INFO] [1758183810.400904781] [gazebo_ros2_control]: State:
[gzserver-3] [INFO] [1758183810.400910361] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.400915741] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.400923641] [gazebo_ros2_control]: velocity
[gzserver-3] [INFO] [1758183810.400929691] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.400935921] [gazebo_ros2_control]: Command:
[gzserver-3] [INFO] [1758183810.400947621] [gazebo_ros2_control]: velocity
[gzserver-3] [INFO] [1758183810.401017751] [gazebo_ros2_control]: Loading joint: wheel_right_joint
[gzserver-3] [INFO] [1758183810.401028200] [gazebo_ros2_control]: State:
[gzserver-3] [INFO] [1758183810.401033270] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401037220] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401042280] [gazebo_ros2_control]: velocity
[gzserver-3] [INFO] [1758183810.401045760] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401049760] [gazebo_ros2_control]: Command:
[gzserver-3] [INFO] [1758183810.401062450] [gazebo_ros2_control]: velocity
[gzserver-3] [INFO] [1758183810.401107430] [gazebo_ros2_control]: Loading joint: joint1
[gzserver-3] [INFO] [1758183810.401116330] [gazebo_ros2_control]: State:
[gzserver-3] [INFO] [1758183810.401122280] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401126400] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401130840] [gazebo_ros2_control]: velocity
[gzserver-3] [INFO] [1758183810.401134250] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401137900] [gazebo_ros2_control]: Command:
[gzserver-3] [INFO] [1758183810.401143420] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401197480] [gazebo_ros2_control]: Loading joint: joint2
[gzserver-3] [INFO] [1758183810.401204669] [gazebo_ros2_control]: State:
[gzserver-3] [INFO] [1758183810.401208159] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401211829] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401216469] [gazebo_ros2_control]: velocity
[gzserver-3] [INFO] [1758183810.401219709] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401223469] [gazebo_ros2_control]: Command:
[gzserver-3] [INFO] [1758183810.401226909] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401270669] [gazebo_ros2_control]: Loading joint: joint3
[gzserver-3] [INFO] [1758183810.401278729] [gazebo_ros2_control]: State:
[gzserver-3] [INFO] [1758183810.401283419] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401288879] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401293379] [gazebo_ros2_control]: velocity
[gzserver-3] [INFO] [1758183810.401296819] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401300569] [gazebo_ros2_control]: Command:
[gzserver-3] [INFO] [1758183810.401303989] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401386308] [gazebo_ros2_control]: Loading joint: joint4
[gzserver-3] [INFO] [1758183810.401395768] [gazebo_ros2_control]: State:
[gzserver-3] [INFO] [1758183810.401399508] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401403228] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401407618] [gazebo_ros2_control]: velocity
[gzserver-3] [INFO] [1758183810.401410928] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401414748] [gazebo_ros2_control]: Command:
[gzserver-3] [INFO] [1758183810.401418168] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401460908] [gazebo_ros2_control]: Loading joint: gripper_left_joint
[gzserver-3] [INFO] [1758183810.401468678] [gazebo_ros2_control]: State:
[gzserver-3] [INFO] [1758183810.401473588] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401477128] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401481138] [gazebo_ros2_control]: velocity
[gzserver-3] [INFO] [1758183810.401484418] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401488388] [gazebo_ros2_control]: Command:
[gzserver-3] [INFO] [1758183810.401491798] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401549798] [gazebo_ros2_control]: Loading joint: gripper_right_joint
[gzserver-3] [INFO] [1758183810.401559357] [gazebo_ros2_control]: Joint 'gripper_right_joint'is mimicking joint 'gripper_left_joint' with multiplier: 1
[gzserver-3] [INFO] [1758183810.401563697] [gazebo_ros2_control]: State:
[gzserver-3] [INFO] [1758183810.401567297] [gazebo_ros2_control]: position
[gzserver-3] [INFO] [1758183810.401571857] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401576067] [gazebo_ros2_control]: velocity
[gzserver-3] [INFO] [1758183810.401579487] [gazebo_ros2_control]: found initial value: 0.000000
[gzserver-3] [INFO] [1758183810.401583227] [gazebo_ros2_control]: Command:
[gzserver-3] [INFO] [1758183810.401586587] [gazebo_ros2_control]: position
[gzserver-3] [WARN] [1758183810.401662787] [gazebo_ros2_control]: Skipping sensor in the URDF named 'battery' which is not in the gazebo model.
[gzserver-3] [INFO] [1758183810.401670827] [gazebo_ros2_control]: Loading sensor: imu
[gzserver-3] [INFO] [1758183810.401674717] [gazebo_ros2_control]: State:
[gzserver-3] [INFO] [1758183810.401681327] [gazebo_ros2_control]: orientation.x
[gzserver-3] [INFO] [1758183810.401685787] [gazebo_ros2_control]: orientation.y
[gzserver-3] [INFO] [1758183810.401689417] [gazebo_ros2_control]: orientation.z
[gzserver-3] [INFO] [1758183810.401692937] [gazebo_ros2_control]: orientation.w
[gzserver-3] [INFO] [1758183810.401696547] [gazebo_ros2_control]: angular_velocity.x
[gzserver-3] [INFO] [1758183810.401700097] [gazebo_ros2_control]: angular_velocity.y
[gzserver-3] [INFO] [1758183810.401703467] [gazebo_ros2_control]: angular_velocity.z
[gzserver-3] [INFO] [1758183810.401706957] [gazebo_ros2_control]: linear_acceleration.x
[gzserver-3] [INFO] [1758183810.401710457] [gazebo_ros2_control]: linear_acceleration.y
[gzserver-3] [INFO] [1758183810.401713817] [gazebo_ros2_control]: linear_acceleration.z
[gzserver-3] [INFO] [1758183810.401726417] [resource_manager]: Initialize hardware 'TurtleBot3ManipulationSystem'
[gzserver-3] [INFO] [1758183810.401776066] [resource_manager]: Successful initialization of hardware 'TurtleBot3ManipulationSystem'
[gzserver-3] [INFO] [1758183810.401810906] [resource_manager]: 'configure' hardware 'TurtleBot3ManipulationSystem'
[gzserver-3] [INFO] [1758183810.401814966] [resource_manager]: Successful 'configure' of hardware 'TurtleBot3ManipulationSystem'
[gzserver-3] [INFO] [1758183810.401819436] [resource_manager]: 'activate' hardware 'TurtleBot3ManipulationSystem'
[gzserver-3] [INFO] [1758183810.401822906] [resource_manager]: Successful 'activate' of hardware 'TurtleBot3ManipulationSystem'
[gzserver-3] [INFO] [1758183810.401866996] [gazebo_ros2_control]: Loading controller_manager
[gzserver-3] [INFO] [1758183810.412076978] [gazebo_ros2_control]: Loaded gazebo_ros2_control.
[gzserver-3] [INFO] [1758183810.446119364] [controller_manager]: Loading controller 'joint_state_broadcaster'
[spawner-2] [INFO] [1758183810.452254290] [spawner_joint_state_broadcaster]: Loaded joint_state_broadcaster
[gzserver-3] [INFO] [1758183810.452944366] [controller_manager]: Configuring controller 'joint_state_broadcaster'
[gzserver-3] [INFO] [1758183810.453037275] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
[spawner-2] [INFO] [1758183810.458323945] [spawner_joint_state_broadcaster]: Configured and activated joint_state_broadcaster
[INFO] [spawn_entity.py-5]: process has finished cleanly [pid 63027]
[INFO] [spawner-2]: process has finished cleanly [pid 63021]
[INFO] [spawner-6]: process started with pid [63371]
[INFO] [spawner-7]: process started with pid [63373]
[INFO] [spawner-8]: process started with pid [63376]
[spawner-8] 1758183810.788566 [42] spawner: selected interface "lo" is not multicast-capable: disabling multicast
[spawner-6] 1758183810.789422 [42] spawner: selected interface "lo" is not multicast-capable: disabling multicast
[spawner-7] 1758183810.790663 [42] spawner: selected interface "lo" is not multicast-capable: disabling multicast
[gzserver-3] [INFO] [1758183810.806652028] [controller_manager]: Loading controller 'imu_broadcaster'
[gzserver-3] [INFO] [1758183810.811298192] [controller_manager]: Loading controller 'arm_controller'
[gzserver-3] [WARN] [1758183810.820085772] [arm_controller]: [Deprecated]: "allow_nonzero_velocity_at_trajectory_end" is set to true. The default behavior will change to false.
[gzserver-3] [INFO] [1758183810.821544154] [controller_manager]: Loading controller 'gripper_controller'
[spawner-8] [INFO] [1758183810.824041440] [spawner_imu_broadcaster]: Loaded imu_broadcaster
[gzserver-3] [INFO] [1758183810.825885939] [controller_manager]: Configuring controller 'imu_broadcaster'
[spawner-8] [INFO] [1758183810.831827525] [spawner_imu_broadcaster]: Configured and activated imu_broadcaster
[spawner-7] [INFO] [1758183810.833091748] [spawner_arm_controller]: Loaded arm_controller
[gzserver-3] [INFO] [1758183810.833649125] [controller_manager]: Configuring controller 'arm_controller'
[gzserver-3] [INFO] [1758183810.833749515] [arm_controller]: No specific joint names are used for command interfaces. Using 'joints' parameter.
[gzserver-3] [INFO] [1758183810.833771374] [arm_controller]: Command interfaces are [position] and state interfaces are [position velocity].
[gzserver-3] [INFO] [1758183810.833796214] [arm_controller]: Using 'splines' interpolation method.
[gzserver-3] [INFO] [1758183810.834178532] [arm_controller]: Controller state will be published at 200.00 Hz.
[gzserver-3] [INFO] [1758183810.835880472] [arm_controller]: Action status changes will be monitored at 20.00 Hz.
[spawner-6] [INFO] [1758183810.841319372] [spawner_gripper_controller]: Loaded gripper_controller
[gzserver-3] [INFO] [1758183810.841735179] [controller_manager]: Configuring controller 'gripper_controller'
[gzserver-3] [INFO] [1758183810.841768989] [gripper_controller]: Action status changes will be monitored at 20.000000 Hz.
[spawner-7] [INFO] [1758183810.842232036] [spawner_arm_controller]: Configured and activated arm_controller
[spawner-6] [INFO] [1758183810.849106307] [spawner_gripper_controller]: Configured and activated gripper_controller
[INFO] [spawner-8]: process has finished cleanly [pid 63376]
[INFO] [spawner-7]: process has finished cleanly [pid 63373]
[INFO] [spawner-6]: process has finished cleanly [pid 63371]
This is a video for the movement of the turtlebot3:
Grabacion.2025-09-18.103720.mp4
And even without the controller, the behaviour of the system is different with the same conditions:
Simulation 1 (RMSE of theta = 0.30081):

Simulation 2 (RMSE of theta = 0.030126):
