Ros 2 foxy OPENXMANUIPALTOR bringup issues

DYNAMIXEL System

Turtlebot3 waffle_pi with OpenManipulatorX arm

Control Environment

Remote Pc: ubuntu 20.04
turtlebot : custom image from TurtleBot3 foxy.

Hardware Description

Standard waffle_pi with openxmanipulator arm, raspberry pi4, Open cr board

Issue Description

Ive followed the instructions outlined here TurtleBot3 and chosen the foxy option. The first thing i noticed was that when trying to build the turtlebot3_manipulation package it is missing some dependencies specifically the Hardware_interface package. So I did a binary install of ```
ros-foxy-ros2-control ros-foxy-ros2-controllers

Afterwards colcon build again and it worked yay. However when I try to use the bring up I get this error. 

ros2 launch turtlebot3_manipulation_bringup hardware.launch.py
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2023-04-27-06-57-47-462900-ubuntu-7756
[INFO] [launch]: Default logging verbosity is set to INFO
Task exception was never retrieved
future: <Task finished name='Task-2' coro=<LaunchService._process_one_event() done, defined at /opt/ros/foxy/lib/python3.8/site-packages/launch/launch_service.py:274> exception=SubstitutionFailure("executable '[<launch.substitutions.text_substitution.TextSubstitution object at 0xffffad2f1700>]' not found on the PATH")>
Traceback (most recent call last):
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_service.py", line 276, in _process_one_event
    await self.__process_event(next_event)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_service.py", line 296, in __process_event
    visit_all_entities_and_collect_futures(entity, self.__context))
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 45, in visit_all_entities_and_collect_futures
    futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 45, in visit_all_entities_and_collect_futures
    futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 45, in visit_all_entities_and_collect_futures
    futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context)
  [Previous line repeated 3 more times]
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 38, in visit_all_entities_and_collect_futures
    sub_entities = entity.visit(context)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/action.py", line 108, in visit
    return self.execute(context)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch_ros/actions/node.py", line 417, in execute
    self._perform_substitutions(context)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch_ros/actions/node.py", line 377, in _perform_substitutions
    evaluated_parameters = evaluate_parameters(context, self.__parameters)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch_ros/utilities/evaluate_parameters.py", line 145, in evaluate_parameters
    output_params.append(evaluate_parameter_dict(context, param))
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch_ros/utilities/evaluate_parameters.py", line 69, in evaluate_parameter_dict
    evaluated_value = perform_substitutions(context, list(value))
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/perform_substitutions_impl.py", line 26, in perform_substitutions
    return ''.join([context.perform_substitution(sub) for sub in subs])
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/perform_substitutions_impl.py", line 26, in <listcomp>
    return ''.join([context.perform_substitution(sub) for sub in subs])
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_context.py", line 197, in perform_substitution
    return substitution.perform(self)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/substitutions/command.py", line 94, in perform
    command_str = perform_substitutions(context, self.command)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/perform_substitutions_impl.py", line 26, in perform_substitutions
    return ''.join([context.perform_substitution(sub) for sub in subs])
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/perform_substitutions_impl.py", line 26, in <listcomp>
    return ''.join([context.perform_substitution(sub) for sub in subs])
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_context.py", line 197, in perform_substitution
    return substitution.perform(self)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/substitutions/path_join_substitution.py", line 45, in perform
    performed_substitutions = [sub.perform(context) for sub in self.__substitutions]
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/substitutions/path_join_substitution.py", line 45, in <listcomp>
    performed_substitutions = [sub.perform(context) for sub in self.__substitutions]
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/substitutions/find_executable.py", line 66, in perform
    raise SubstitutionFailure("executable '{}' not found on the PATH".format(self.name))
launch.substitutions.substitution_failure.SubstitutionFailure: executable '[<launch.substitutions.text_substitution.TextSubstitution object at 0xffffad2f1700>]' not found on the PATH
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Ive doubled checked ive sourced correctly but if this is an issue here is my .bashrc file.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
ubuntu@ubuntu:~$ cat .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
	# We have color support; assume it's compliant with Ecma-48
	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
	# a case would tend to support setf rather than setaf.)
	color_prompt=yes
    else
	color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
alias nb='nano ~/.bashrc'
alias eb='nano ~/.bashrc'
alias sb='source ~/.bashrc'
alias gs='git status'
alias gp='git pull'
alias cw='cd ~/turtlebot3_ws'
alias cs='cd ~/turtlebot3_ws/src'
alias cb='cd ~/turtlebot3_ws && colcon build --symlink-install && source ~/.bashrc'
source /opt/ros/foxy/setup.bash
source ~/turtlebot3_ws/install/local_setup.bash

export ROS_DOMAIN_ID=30 # Default ROS2 Domain ID for TurtleBot3
export LDS_MODEL=LDS-01
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
I am unsure how to progress. I have looked into some of these packages and they all seem to be correct but the error suggest there is an error with an executable ? Any help would be much appreciated thank you for your time
1 Like

Would you be able to share the command you used to install the missing controller packages, as well as the errors you received about the missing dependencies?

That information might be helpful in figuring out what might be going wrong here.

Hi Jonathon,
The error I got when trying to build turltlebot3_manipulation is as follows,
cd ~/turtlebot3_ws && colcon build --symlink-install
Starting >>> turtlebot3_manipulation_description
Starting >>> turtlebot3_description
Starting >>> turtlebot3_node
Starting >>> turtlebot3_example
Finished <<< turtlebot3_manipulation_description [1.78s]
Starting >>> turtlebot3_manipulation_bringup
Finished <<< turtlebot3_description [1.86s]
Starting >>> turtlebot3_manipulation_moveit_config
Finished <<< turtlebot3_node [2.12s]
Starting >>> turtlebot3_manipulation_cartographer
Finished <<< turtlebot3_manipulation_cartographer [1.69s]
Starting >>> turtlebot3_manipulation_hardware
Finished <<< turtlebot3_example [3.97s]
Starting >>> turtlebot3_manipulation_navigation2
— stderr: turtlebot3_manipulation_hardware
CMake Error at CMakeLists.txt:21 (find_package):
By not providing “Findhardware_interface.cmake” in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
“hardware_interface”, but CMake did not find one.

Could not find a package configuration file provided by
“hardware_interface” with any of the following names:

hardware_interfaceConfig.cmake
hardware_interface-config.cmake

Add the installation prefix of “hardware_interface” to CMAKE_PREFIX_PATH or
set “hardware_interface_DIR” to a directory containing one of the above
files. If “hardware_interface” provides a separate development package or
SDK, be sure it has been installed.


Failed <<< turtlebot3_manipulation_hardware [1.72s, exited with code 1]
Aborted <<< turtlebot3_manipulation_navigation2 [1.54s]
Aborted <<< turtlebot3_manipulation_moveit_config [4.36s]
Aborted <<< turtlebot3_manipulation_bringup [4.50s]

Summary: 5 packages finished [6.99s]
1 package failed: turtlebot3_manipulation_hardware
3 packages aborted: turtlebot3_manipulation_bringup turtlebot3_manipulation_moveit_config turtlebot3_manipulation_navigation2
1 package had stderr output: turtlebot3_manipulation_hardware
6 packages not processed
“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”
The packages I installed for the missing controller packages are ros-foxy-ros2-control and ros-foxy-ros2-controllers. Here is a link to the git hub for GitHub - ros-controls/ros2_control at foxy. I’m aware that the packages Installed are the binary ones however the link provided should show that they contain the missing hardware interface package. I have had issues getting rosdep to work with ros2 foxy so im only assuming that the missing package of hardware interface was the issue, However I did check the ros2 pkg list and it was not there. Only after installing the binary packages was hardware interface in the pkg list . I hope this information helps

1 Like

I also have a similar issue with my Turtlebot 3 Ros 2 foxy, have you resolved the issue?

@Jaiteezy @Frank

The hardware interface package is included in the ros2 control package.

Please check if you have correctly installed the ros2 control package, and if you are missing the hardware interface somehow, please install using the command below

$ sudo apt install ros2-foxy-hardware-interface
1 Like

Sorry for the confusion, Jonathan asked how we fixed our dependencies which was the error we showed above. We have already installed Ros 2 control packages specifically using sudo apt install ros-foxy-ros2-control and sudo apt install ros-foxy-ros2-controllers on the robot (This was not in the guide). We then built turtlebot3_manipulation package and ran ros2 launch turtlebot3_manipulation_bringup hardware.launch.py which resulted in this error.
“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”
ros2 launch turtlebot3_manipulation_bringup hardware.launch.py
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2023-04-27-06-57-47-462900-ubuntu-7756
[INFO] [launch]: Default logging verbosity is set to INFO
Task exception was never retrieved
future: <Task finished name=‘Task-2’ coro=<LaunchService._process_one_event() done, defined at /opt/ros/foxy/lib/python3.8/site-packages/launch/launch_service.py:274> exception=SubstitutionFailure(“executable ‘[<launch.substitutions.text_substitution.TextSubstitution object at 0xffffad2f1700>]’ not found on the PATH”)>
Traceback (most recent call last):
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_service.py”, line 276, in _process_one_event
await self.__process_event(next_event)
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_service.py”, line 296, in __process_event
visit_all_entities_and_collect_futures(entity, self.__context))
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py”, line 45, in visit_all_entities_and_collect_futures
futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context)
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py”, line 45, in visit_all_entities_and_collect_futures
futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context)
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py”, line 45, in visit_all_entities_and_collect_futures
futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context)
[Previous line repeated 3 more times]
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py”, line 38, in visit_all_entities_and_collect_futures
sub_entities = entity.visit(context)
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/action.py”, line 108, in visit
return self.execute(context)
File “/opt/ros/foxy/lib/python3.8/site-packages/launch_ros/actions/node.py”, line 417, in execute
self._perform_substitutions(context)
File “/opt/ros/foxy/lib/python3.8/site-packages/launch_ros/actions/node.py”, line 377, in _perform_substitutions
evaluated_parameters = evaluate_parameters(context, self.__parameters)
File “/opt/ros/foxy/lib/python3.8/site-packages/launch_ros/utilities/evaluate_parameters.py”, line 145, in evaluate_parameters
output_params.append(evaluate_parameter_dict(context, param))
File “/opt/ros/foxy/lib/python3.8/site-packages/launch_ros/utilities/evaluate_parameters.py”, line 69, in evaluate_parameter_dict
evaluated_value = perform_substitutions(context, list(value))
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/perform_substitutions_impl.py”, line 26, in perform_substitutions
return ‘’.join([context.perform_substitution(sub) for sub in subs])
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/perform_substitutions_impl.py”, line 26, in
return ‘’.join([context.perform_substitution(sub) for sub in subs])
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_context.py”, line 197, in perform_substitution
return substitution.perform(self)
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/substitutions/command.py”, line 94, in perform
command_str = perform_substitutions(context, self.command)
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/perform_substitutions_impl.py”, line 26, in perform_substitutions
return ‘’.join([context.perform_substitution(sub) for sub in subs])
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/perform_substitutions_impl.py”, line 26, in
return ‘’.join([context.perform_substitution(sub) for sub in subs])
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_context.py”, line 197, in perform_substitution
return substitution.perform(self)
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/substitutions/path_join_substitution.py”, line 45, in perform
performed_substitutions = [sub.perform(context) for sub in self.__substitutions]
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/substitutions/path_join_substitution.py”, line 45, in
performed_substitutions = [sub.perform(context) for sub in self.__substitutions]
File “/opt/ros/foxy/lib/python3.8/site-packages/launch/substitutions/find_executable.py”, line 66, in perform
raise SubstitutionFailure(“executable ‘{}’ not found on the PATH”.format(self.name))
launch.substitutions.substitution_failure.SubstitutionFailure: executable ‘[<launch.substitutions.text_substitution.TextSubstitution object at 0xffffad2f1700>]’ not found on the PATH
“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”"
This is the error we are really struggling with any help would be much appreciated.
@willson

I’m having exactly the same issue. Installation of all packages en colcon build worked perfect. But I have the same issue as above. Somebody has an idea?
Thanks.

Ive recently looked at other options and decided to move to moveit 2. unfortunately ive encountered another problem. But interestingly the package displays an error that is customized in the colcon build phase. Stating that the dependencies or packages within moveit need to be built with cmake version 3.20 or greater. My suspicion is that a similar issue is happening with the turtlebot3_manuiplation package but instead of giving an error it just builds the package anyways leading to pathing issues because of the later version of cmake. However this is just speculations at this point I need to do some more testing

So after upgrading cmake and going through the install process for moveit2. The bringup (turtlebot3_manipulation_bringup)is now kinda working i`m having a no status packet error now. Does anyone know how to fix this.
ubuntu@ubuntu:~$ ros2 launch turtlebot3_manipulation_bringup hardware.launch.py
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2023-05-21-05-22-26-795780-ubuntu-1195
[INFO] [launch]: Default logging verbosity is set to INFO
/opt/ros/foxy/share/hls_lfcd_lds_driver/launch/hlds_laser.launch.py:46: UserWarning: The parameter ‘node_executable’ is deprecated, use ‘executable’ instead
Node(
/opt/ros/foxy/share/hls_lfcd_lds_driver/launch/hlds_laser.launch.py:46: UserWarning: The parameter ‘node_name’ is deprecated, use ‘name’ instead
Node(
[INFO] [robot_state_publisher-1]: process started with pid [1200]
[INFO] [ros2_control_node-2]: process started with pid [1202]
[INFO] [spawner.py-3]: process started with pid [1204]
[INFO] [spawner.py-4]: process started with pid [1207]
[INFO] [spawner.py-5]: process started with pid [1209]
[INFO] [spawner.py-6]: process started with pid [1211]
[INFO] [spawner.py-7]: process started with pid [1214]
[INFO] [hlds_laser_publisher-8]: process started with pid [1216]
[hlds_laser_publisher-8] [INFO] [1684646549.371273326] [hlds_laser_publisher]: Init hlds_laser_publisher Node Main
[hlds_laser_publisher-8] [INFO] [1684646549.371591524] [hlds_laser_publisher]: port : /dev/ttyUSB0 frame_id : base_scan
[robot_state_publisher-1] Parsing robot urdf xml string.
[robot_state_publisher-1] Link base_link had 8 children
[robot_state_publisher-1] Link link1 had 1 children
[robot_state_publisher-1] Link link2 had 1 children
[robot_state_publisher-1] Link link3 had 1 children
[robot_state_publisher-1] Link link4 had 1 children
[robot_state_publisher-1] Link link5 had 3 children
[robot_state_publisher-1] Link end_effector_link had 0 children
[robot_state_publisher-1] Link gripper_left_link had 0 children
[robot_state_publisher-1] Link gripper_right_link had 0 children
[robot_state_publisher-1] Link camera_link had 1 children
[robot_state_publisher-1] Link camera_rgb_frame had 1 children
[robot_state_publisher-1] Link camera_rgb_optical_frame had 0 children
[robot_state_publisher-1] Link caster_back_left_link had 0 children
[robot_state_publisher-1] Link caster_back_right_link had 0 children
[robot_state_publisher-1] Link imu_link had 0 children
[robot_state_publisher-1] Link base_scan had 0 children
[robot_state_publisher-1] Link wheel_left_link had 0 children
[robot_state_publisher-1] Link wheel_right_link had 0 children
[robot_state_publisher-1] [INFO] [1684646549.512872343] [robot_state_publisher]: got segment base_footprint
[robot_state_publisher-1] [INFO] [1684646549.513500426] [robot_state_publisher]: got segment base_link
[robot_state_publisher-1] [INFO] [1684646549.513666294] [robot_state_publisher]: got segment base_scan
[robot_state_publisher-1] [INFO] [1684646549.513714441] [robot_state_publisher]: got segment camera_link
[robot_state_publisher-1] [INFO] [1684646549.513750922] [robot_state_publisher]: got segment camera_rgb_frame
[robot_state_publisher-1] [INFO] [1684646549.513781385] [robot_state_publisher]: got segment camera_rgb_optical_frame
[robot_state_publisher-1] [INFO] [1684646549.513810736] [robot_state_publisher]: got segment caster_back_left_link
[robot_state_publisher-1] [INFO] [1684646549.513839606] [robot_state_publisher]: got segment caster_back_right_link
[robot_state_publisher-1] [INFO] [1684646549.513867791] [robot_state_publisher]: got segment end_effector_link
[robot_state_publisher-1] [INFO] [1684646549.513896050] [robot_state_publisher]: got segment gripper_left_link
[robot_state_publisher-1] [INFO] [1684646549.513924197] [robot_state_publisher]: got segment gripper_right_link
[robot_state_publisher-1] [INFO] [1684646549.513951234] [robot_state_publisher]: got segment imu_link
[robot_state_publisher-1] [INFO] [1684646549.513979808] [robot_state_publisher]: got segment link1
[robot_state_publisher-1] [INFO] [1684646549.514007548] [robot_state_publisher]: got segment link2
[robot_state_publisher-1] [INFO] [1684646549.514035437] [robot_state_publisher]: got segment link3
[robot_state_publisher-1] [INFO] [1684646549.514062325] [robot_state_publisher]: got segment link4
[robot_state_publisher-1] [INFO] [1684646549.514090362] [robot_state_publisher]: got segment link5
[robot_state_publisher-1] [INFO] [1684646549.514118139] [robot_state_publisher]: got segment wheel_left_link
[robot_state_publisher-1] [INFO] [1684646549.514199508] [robot_state_publisher]: got segment wheel_right_link
[ros2_control_node-2] [INFO] [1684646549.599140245] [turtlebot3_manipulation]: Succeeded to open port
[ros2_control_node-2] [INFO] [1684646549.604998600] [turtlebot3_manipulation]: Succeeded to set baudrate
[ros2_control_node-2] [INFO] [1684646549.613188993] [turtlebot3_manipulation]: OpenCR Model Number 20480
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [INFO] [1684646549.647741223] [turtlebot3_manipulation]: Connected manipulator
[ros2_control_node-2] [INFO] [1684646549.648096588] [turtlebot3_manipulation]: Connected wheels
[ros2_control_node-2] [INFO] [1684646549.648889187] [turtlebot3_manipulation]: Ready for start
[ros2_control_node-2] [INFO] [1684646549.683091775] [turtlebot3_manipulation]: Wait for IMU re-calibration
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[spawner.py-6] [INFO] [1684646550.621906569] [spawner_arm_controller]: Waiting for /controller_manager services
[spawner.py-6] [INFO] [1684646552.669190437] [spawner_arm_controller]: Waiting for /controller_manager services
[ros2_control_node-2] [INFO] [1684646552.717809864] [turtlebot3_manipulation]: Joints and wheels torque ON
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [INFO] [1684646552.767452608] [turtlebot3_manipulation]: Set profile acceleration and velocity to joints
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [INFO] [1684646552.838450304] [turtlebot3_manipulation]: Set profile acceleration and velocity to gripper
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [INFO] [1684646552.909446519] [turtlebot3_manipulation]: Set goal current value to gripper
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [INFO] [1684646552.944489004] [turtlebot3_manipulation]: System starting
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [INFO] [1684646553.015543367] [controller_manager]: update rate is 100 Hz
[ros2_control_node-2] [INFO] [1684646553.026088188] [turtlebot3_manipulation]: Start to read wheels and manipulator states
[ros2_control_node-2] [INFO] [1684646553.051694632] [turtlebot3_manipulation]: Start to write wheels and manipulator commands
[ros2_control_node-2] [INFO] [1684646553.060918214] [controller_manager]: Loading controller ‘joint_state_broadcaster’
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [ERROR] [1684646553.123098880] [turtlebot3_manipulation]: Can’t control wheels
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [INFO] [1684646553.196280989] [controller_manager]: Loading controller ‘diff_drive_controller’
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[spawner.py-3] [INFO] [1684646553.273530667] [spawner_joint_state_broadcaster]: Loaded joint_state_broadcaster
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [INFO] [1684646553.373200151] [controller_manager]: Loading controller ‘gripper_controller’
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] [ERROR] [1684646553.443826207] [turtlebot3_manipulation]: Can’t control wheels
[spawner.py-4] [INFO] [1684646553.456186093] [spawner_diff_drive_controller]: Loaded diff_drive_controller
[ros2_control_node-2] [ERROR] [DynamixelSDKWrapper] [TxRxResult] There is no status packet!
[ros2_control_node-2] *** stack smashing detected ***: terminated
[ERROR] [ros2_control_node-2]: process has died [pid 1202, exit code -6, cmd ‘/opt/ros/foxy/lib/controller_manager/ros2_control_node --ros-args --params-file /tmp/launch_params_ptjp6_fc --params-file /home/ubuntu/turtlebot3_ws/install/turtlebot3_manipulation_bringup/share/turtlebot3_manipulation_bringup/config/hardware_controller_manager.yaml -r ~/cmd_vel_unstamped:=cmd_vel’].

For those still interested. I have discovered that there is nothing wrong with the turtlebot3_manuiplation package and its dependencies. Instead there is most likely an issue with the image for the opencr board for the turtlebot3_manuiplation. By mistake I discovered that if you overload servo motors 12 or 13 the program actually works completely fine. Obviously without servo motors 12 or 13 functioning. Rvis also works and u can manipulate the components of the openmanipulator-x arm perfectly fine (only the working servo motors). I am assuming there is an issue with the number of servo motors passing through the port for acm0 I think. Just like when u assign smart ids to a device you have to design the packet (or blocks) to hold the require data for each servo motor and you have to indentify the size of these packets/blocks to pass through a port. Im assuming since this package has been designed around the panda arm the packets/blocks have not been resize for the extra servo motor openmanipulator-x arm has. I may have miss conceptions about this but if anyone else has any other ideas I should test please let me know.

Hi all,
Its been a while but a managed to come up with a solve, I don`t understand why it works or what the origin of the problem actually is however this solution should work. I apologize if the instruction are un clear I don’t normally make these sorts of things.

STEPS TO FIX ARM:

After building turtlebot3_manuplation package there will be missing dependcies
colcon build should tell you which packages to install do as advised

After this disconnect from pi and connect to pc.

NEXT:

ON PC

$ sudo apt install ros-foxy-rqt* ros-foxy-joint-state-publisher

$ cd ~/colcon_ws/src/
$ git clone -b foxy-devel GitHub - ROBOTIS-GIT/DynamixelSDK: ROBOTIS Dynamixel SDK (Protocol1.0/2.0)
$ git clone -b ros2 GitHub - ROBOTIS-GIT/dynamixel-workbench: ROS packages for Dynamixel controllers, msgs, single_manager, toolbox, tutorials
$ git clone -b foxy-devel GitHub - ROBOTIS-GIT/open_manipulator: OpenManipulator for controlling in Gazebo and Moveit with ROS
$ git clone -b ros2 GitHub - ROBOTIS-GIT/open_manipulator_msgs: ROS Messages for OpenManipulator
$ git clone -b ros2 GitHub - ROBOTIS-GIT/open_manipulator_dependencies
$ git clone -b ros2 GitHub - ROBOTIS-GIT/robotis_manipulator: This package contains the manipulation API and functions for controlling the manipulator.
$ cd ~/colcon_ws && colcon build --symlink-install

load arduino IDE

Follow This OpenCR 1.0
Navigate to
File > Examples > OpenCR > 10.Etc > usb_to_dxl

Load to open_cr board

Check if it works using the commands below:

ros2 launch open_manipulator_x_controller open_manipulator_x_controller.launch.py usb_port:=/dev/ttyACM0
ros2 run open_manipulator_x_teleop teleop_keyboard

Then disconnect bot from PC

Install these on the Rasiberry pi 4:

$ sudo apt install ros-foxy-rqt* ros-foxy-joint-state-publisher

$ cd ~/colcon_ws/src/
$ git clone -b ros2 GitHub - ROBOTIS-GIT/dynamixel-workbench: ROS packages for Dynamixel controllers, msgs, single_manager, toolbox, tutorials
$ git clone -b foxy-devel GitHub - ROBOTIS-GIT/open_manipulator: OpenManipulator for controlling in Gazebo and Moveit with ROS
$ git clone -b ros2 GitHub - ROBOTIS-GIT/open_manipulator_msgs: ROS Messages for OpenManipulator
$ git clone -b ros2 GitHub - ROBOTIS-GIT/open_manipulator_dependencies
$ git clone -b ros2 GitHub - ROBOTIS-GIT/robotis_manipulator: This package contains the manipulation API and functions for controlling the manipulator.
$ cd ~/colcon_ws && colcon build --symlink-install

Once again check if it works using the commands below,

ros2 launch open_manipulator_x_controller open_manipulator_x_controller.launch.py usb_port:=/dev/ttyACM0
ros2 run open_manipulator_x_teleop teleop_keyboard

navigate to ~/turtlebot3_manipulation/turtlebot3_manipulation_description/ros2_control/

Access turtlebot3_manipulation_system.ros2_control.xacro edit this,
if you cannot see the .xacro file using ‘ls’
use this command instead:
chmod 777

Change the baud rate to 4,000,000 (not sure if this affects anything)

Delete build and install folder (do a fresh colcon build of the turtlebot3_ws not colcon_ws)

colcon build

If all good flash the opencr board, (check emanual for most update to date method or use below)

$ export OPENCR_PORT=/dev/ttyACM0
$ export OPENCR_MODEL=turtlebot3_manipulation
$ rm -rf ./opencr_update.tar.bz2
$ wget https://github.com/ROBOTIS-GIT/OpenCR-Binaries/raw/master/turtlebot3/ROS2/latest/opencr_update.tar.bz2
$ tar -xvf opencr_update.tar.bz2
$ cd ./opencr_update
$ ./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr

now try launching this again
$ ros2 launch turtlebot3_manipulation_bringup hardware.launch.py
This should now work.

(notes: This works for foxy but should also work for humble as it has the same issues.)