IEEE Robotics & Automation Magazine - September 2020 - 140

●●

●●

●●

 e will now be able to use RViZ (http://wiki.ros.org/rviz)
W
to visualize the robot model (http://wiki.ros.org/rviz/DisplayTypes/RobotModel), showing the links of the CENTAURO robot as defined in the Unified Robot
Description Format (URDF) (http://wiki.ros.org/urdf)
specified in the centauro_basic.yaml configuration
file in the correct poses according to the tf (http://wiki.ros.
org/tf) transform tree. XBotCore runs the robot_state_publisher (http://wiki.ros.org/robot_state_publisher) component
internally so that ROS nodes are able to read the robot transforms from the tf topic. Additionally, the robot's URDF is
published to the ROS parameter server under the name /
xbotcore/robot_description.
Moreover, thanks to the XBot, we are also able to read the
state of the robot's joint using the custom ROS message
(https://github.com/ADVRHumanoids/xbot
_msgs/blob/master/msg/JointState.msg ),
which is published by the communication handler in the /
xbotcore/joint_state.
Once XBotCore is started and the robot is correctly
visualized on RViZ, we are able to start one of the RT
plug-ins listed in the centauro_basic.yaml configuration file. For example, we can move the robot to a
"homing" configuration, calling the available "switch"
ROS service ready to use, because of the following
framework:
rosservice call/xbotcore/-
HomingExample_switch 1

●●

 he robot should now be visualized in the homing configT
uration on RViZ. The user can decide to stop the RT plugins and start the control of the robot using a non-RT
framework by doing the following:
rosservice call/xbotcore/-
HomingExample_switch 0
rosservice call/xbotcore/-
XBotCommunicationPlugin_switch 1

●●

T
 he XBotCommunicationPlugin is a special XBot
plug-in that enables the control of the robot through a nonRT master framework specified in the configuration file we
set. In this basic example, we rely on ROS and define the
following custom ROS message to send reference commands to the robot:
https://github.com/ADVRHumanoids/
xbot_msgs/blob/master/msg/
JointCommand.msg

●●

140

*

 n easy-to-run example for this feature employs either 1) a
A
simple ROS node (implemented in C++ or Python) to move
the CENTAURO robot in the joint space using the custom
joint command message previously described or 2) an even

IEEE ROBOTICS & AUTOMATION MAGAZINE

*

SEPTEMBER 2020

simpler command-line publishing of data to the /
xbotcore/command topic:
rostopic pub/xbotcore/command
xbot_msgs/JointCommand "header:
seq: 0
stamp: {secs: 0, nsecs: 0}
frame_id: ''
name: ['torso_yaw']
position: [0.5]
velocity: 0
effort: 0
stiffness: 0
damping: 0
ctrl_mode: [1]
aux_name: ''
aux: 0"

During the 2018 IEEE/Robotics Society of Japan International Conference on Intelligent Robots and Systems, the
full-day tutorial "A Hands-on Tutorial on XBotCore: A
Real-Time Cross-Robot and Cross-Framework Software
Architecture," about the XBot framework was held (https://
www.iros2018.org/tutorials) (https://xbotcoretutorial
.weebly.com/). Readers can find all of the r-elated material
online at https://github.com/ADVRHumanoids/-
tutorial_iros2018.
One of the core functionalities of the XBot framework is its
cross-robot compatibility due to the XBotInterface component,
which dynamically generates the robot API and a kinematic/
dynamic model of it, taking as an input only the URDF, SRDF
(Semantic Robot Description Format) (http://wiki.ros.org/srdf),
and joint-ID map specified in the XBot configuration file. Moreover, because of the R-HAL component, we are able to go from
the kinematic simulation mode (the dummy mode described
previously) to the dynamic simulation mode, for example, using
the Gazebo simulated environment simply by adding the following plug-in in the input URDF:




The aforementioned homing plug-in can easily be run
not only in dummy mode or on the real robots but also in
the Gazebo simulator, as shown in Figure 6. At the same
time, we are able to go from the simulation mode (either
kinematic or dynamic) to the real robot by providing the
configuration file the low-level R-HAL implementation to
load. As an example, the COMAN+ humanoid robot is
capable of executing the same homing plug-in of the
simulated "dummy" CENTAURO (Figure 7) just by
changing the configuration file, which will now load the
COMAN+ URDF, SRDF, joint-ID map, and R-HAL EtherCAT implementation:


http://wiki.ros.org/rviz http://wiki.ros.org/rviz/DisplayTypes/RobotModel http://wiki.ros.org/rviz/DisplayTypes/RobotModel http://wiki.ros.org/urdf http://wiki.ros.org/tf http://wiki.ros.org/tf http://wiki.ros.org/robot_state_publisher https://www.github.com/ADVRHumanoids/xbot http://www.iros2018.org/tutorials http://www.iros2018.org/tutorials https://xbotcoretutorial.weebly.com/ https://xbotcoretutorial.weebly.com/ https://github.com/ADVRHumanoids/tutorial_iros2018 https://github.com/ADVRHumanoids/tutorial_iros2018 http://wiki.ros.org/srdf https://github.com/ADVRHumanoids/xbot_msgs/blob/master/msg/JointCommand.msg https://github.com/ADVRHumanoids/xbot_msgs/blob/master/msg/JointCommand.msg https://github.com/ADVRHumanoids/xbot_msgs/blob/master/msg/JointCommand.msg

IEEE Robotics & Automation Magazine - September 2020

Table of Contents for the Digital Edition of IEEE Robotics & Automation Magazine - September 2020

IEEE Robotics & Automation Magazine - September 2020 - Cover1
IEEE Robotics & Automation Magazine - September 2020 - Cover2
IEEE Robotics & Automation Magazine - September 2020 - 1
IEEE Robotics & Automation Magazine - September 2020 - 2
IEEE Robotics & Automation Magazine - September 2020 - 3
IEEE Robotics & Automation Magazine - September 2020 - 4
IEEE Robotics & Automation Magazine - September 2020 - 5
IEEE Robotics & Automation Magazine - September 2020 - 6
IEEE Robotics & Automation Magazine - September 2020 - 7
IEEE Robotics & Automation Magazine - September 2020 - 8
IEEE Robotics & Automation Magazine - September 2020 - 9
IEEE Robotics & Automation Magazine - September 2020 - 10
IEEE Robotics & Automation Magazine - September 2020 - 11
IEEE Robotics & Automation Magazine - September 2020 - 12
IEEE Robotics & Automation Magazine - September 2020 - 13
IEEE Robotics & Automation Magazine - September 2020 - 14
IEEE Robotics & Automation Magazine - September 2020 - 15
IEEE Robotics & Automation Magazine - September 2020 - 16
IEEE Robotics & Automation Magazine - September 2020 - 17
IEEE Robotics & Automation Magazine - September 2020 - 18
IEEE Robotics & Automation Magazine - September 2020 - 19
IEEE Robotics & Automation Magazine - September 2020 - 20
IEEE Robotics & Automation Magazine - September 2020 - 21
IEEE Robotics & Automation Magazine - September 2020 - 22
IEEE Robotics & Automation Magazine - September 2020 - 23
IEEE Robotics & Automation Magazine - September 2020 - 24
IEEE Robotics & Automation Magazine - September 2020 - 25
IEEE Robotics & Automation Magazine - September 2020 - 26
IEEE Robotics & Automation Magazine - September 2020 - 27
IEEE Robotics & Automation Magazine - September 2020 - 28
IEEE Robotics & Automation Magazine - September 2020 - 29
IEEE Robotics & Automation Magazine - September 2020 - 30
IEEE Robotics & Automation Magazine - September 2020 - 31
IEEE Robotics & Automation Magazine - September 2020 - 32
IEEE Robotics & Automation Magazine - September 2020 - 33
IEEE Robotics & Automation Magazine - September 2020 - 34
IEEE Robotics & Automation Magazine - September 2020 - 35
IEEE Robotics & Automation Magazine - September 2020 - 36
IEEE Robotics & Automation Magazine - September 2020 - 37
IEEE Robotics & Automation Magazine - September 2020 - 38
IEEE Robotics & Automation Magazine - September 2020 - 39
IEEE Robotics & Automation Magazine - September 2020 - 40
IEEE Robotics & Automation Magazine - September 2020 - 41
IEEE Robotics & Automation Magazine - September 2020 - 42
IEEE Robotics & Automation Magazine - September 2020 - 43
IEEE Robotics & Automation Magazine - September 2020 - 44
IEEE Robotics & Automation Magazine - September 2020 - 45
IEEE Robotics & Automation Magazine - September 2020 - 46
IEEE Robotics & Automation Magazine - September 2020 - 47
IEEE Robotics & Automation Magazine - September 2020 - 48
IEEE Robotics & Automation Magazine - September 2020 - 49
IEEE Robotics & Automation Magazine - September 2020 - 50
IEEE Robotics & Automation Magazine - September 2020 - 51
IEEE Robotics & Automation Magazine - September 2020 - 52
IEEE Robotics & Automation Magazine - September 2020 - 53
IEEE Robotics & Automation Magazine - September 2020 - 54
IEEE Robotics & Automation Magazine - September 2020 - 55
IEEE Robotics & Automation Magazine - September 2020 - 56
IEEE Robotics & Automation Magazine - September 2020 - 57
IEEE Robotics & Automation Magazine - September 2020 - 58
IEEE Robotics & Automation Magazine - September 2020 - 59
IEEE Robotics & Automation Magazine - September 2020 - 60
IEEE Robotics & Automation Magazine - September 2020 - 61
IEEE Robotics & Automation Magazine - September 2020 - 62
IEEE Robotics & Automation Magazine - September 2020 - 63
IEEE Robotics & Automation Magazine - September 2020 - 64
IEEE Robotics & Automation Magazine - September 2020 - 65
IEEE Robotics & Automation Magazine - September 2020 - 66
IEEE Robotics & Automation Magazine - September 2020 - 67
IEEE Robotics & Automation Magazine - September 2020 - 68
IEEE Robotics & Automation Magazine - September 2020 - 69
IEEE Robotics & Automation Magazine - September 2020 - 70
IEEE Robotics & Automation Magazine - September 2020 - 71
IEEE Robotics & Automation Magazine - September 2020 - 72
IEEE Robotics & Automation Magazine - September 2020 - 73
IEEE Robotics & Automation Magazine - September 2020 - 74
IEEE Robotics & Automation Magazine - September 2020 - 75
IEEE Robotics & Automation Magazine - September 2020 - 76
IEEE Robotics & Automation Magazine - September 2020 - 77
IEEE Robotics & Automation Magazine - September 2020 - 78
IEEE Robotics & Automation Magazine - September 2020 - 79
IEEE Robotics & Automation Magazine - September 2020 - 80
IEEE Robotics & Automation Magazine - September 2020 - 81
IEEE Robotics & Automation Magazine - September 2020 - 82
IEEE Robotics & Automation Magazine - September 2020 - 83
IEEE Robotics & Automation Magazine - September 2020 - 84
IEEE Robotics & Automation Magazine - September 2020 - 85
IEEE Robotics & Automation Magazine - September 2020 - 86
IEEE Robotics & Automation Magazine - September 2020 - 87
IEEE Robotics & Automation Magazine - September 2020 - 88
IEEE Robotics & Automation Magazine - September 2020 - 89
IEEE Robotics & Automation Magazine - September 2020 - 90
IEEE Robotics & Automation Magazine - September 2020 - 91
IEEE Robotics & Automation Magazine - September 2020 - 92
IEEE Robotics & Automation Magazine - September 2020 - 93
IEEE Robotics & Automation Magazine - September 2020 - 94
IEEE Robotics & Automation Magazine - September 2020 - 95
IEEE Robotics & Automation Magazine - September 2020 - 96
IEEE Robotics & Automation Magazine - September 2020 - 97
IEEE Robotics & Automation Magazine - September 2020 - 98
IEEE Robotics & Automation Magazine - September 2020 - 99
IEEE Robotics & Automation Magazine - September 2020 - 100
IEEE Robotics & Automation Magazine - September 2020 - 101
IEEE Robotics & Automation Magazine - September 2020 - 102
IEEE Robotics & Automation Magazine - September 2020 - 103
IEEE Robotics & Automation Magazine - September 2020 - 104
IEEE Robotics & Automation Magazine - September 2020 - 105
IEEE Robotics & Automation Magazine - September 2020 - 106
IEEE Robotics & Automation Magazine - September 2020 - 107
IEEE Robotics & Automation Magazine - September 2020 - 108
IEEE Robotics & Automation Magazine - September 2020 - 109
IEEE Robotics & Automation Magazine - September 2020 - 110
IEEE Robotics & Automation Magazine - September 2020 - 111
IEEE Robotics & Automation Magazine - September 2020 - 112
IEEE Robotics & Automation Magazine - September 2020 - 113
IEEE Robotics & Automation Magazine - September 2020 - 114
IEEE Robotics & Automation Magazine - September 2020 - 115
IEEE Robotics & Automation Magazine - September 2020 - 116
IEEE Robotics & Automation Magazine - September 2020 - 117
IEEE Robotics & Automation Magazine - September 2020 - 118
IEEE Robotics & Automation Magazine - September 2020 - 119
IEEE Robotics & Automation Magazine - September 2020 - 120
IEEE Robotics & Automation Magazine - September 2020 - 121
IEEE Robotics & Automation Magazine - September 2020 - 122
IEEE Robotics & Automation Magazine - September 2020 - 123
IEEE Robotics & Automation Magazine - September 2020 - 124
IEEE Robotics & Automation Magazine - September 2020 - 125
IEEE Robotics & Automation Magazine - September 2020 - 126
IEEE Robotics & Automation Magazine - September 2020 - 127
IEEE Robotics & Automation Magazine - September 2020 - 128
IEEE Robotics & Automation Magazine - September 2020 - 129
IEEE Robotics & Automation Magazine - September 2020 - 130
IEEE Robotics & Automation Magazine - September 2020 - 131
IEEE Robotics & Automation Magazine - September 2020 - 132
IEEE Robotics & Automation Magazine - September 2020 - 133
IEEE Robotics & Automation Magazine - September 2020 - 134
IEEE Robotics & Automation Magazine - September 2020 - 135
IEEE Robotics & Automation Magazine - September 2020 - 136
IEEE Robotics & Automation Magazine - September 2020 - 137
IEEE Robotics & Automation Magazine - September 2020 - 138
IEEE Robotics & Automation Magazine - September 2020 - 139
IEEE Robotics & Automation Magazine - September 2020 - 140
IEEE Robotics & Automation Magazine - September 2020 - 141
IEEE Robotics & Automation Magazine - September 2020 - 142
IEEE Robotics & Automation Magazine - September 2020 - 143
IEEE Robotics & Automation Magazine - September 2020 - 144
IEEE Robotics & Automation Magazine - September 2020 - 145
IEEE Robotics & Automation Magazine - September 2020 - 146
IEEE Robotics & Automation Magazine - September 2020 - 147
IEEE Robotics & Automation Magazine - September 2020 - 148
IEEE Robotics & Automation Magazine - September 2020 - 149
IEEE Robotics & Automation Magazine - September 2020 - 150
IEEE Robotics & Automation Magazine - September 2020 - 151
IEEE Robotics & Automation Magazine - September 2020 - 152
IEEE Robotics & Automation Magazine - September 2020 - 153
IEEE Robotics & Automation Magazine - September 2020 - 154
IEEE Robotics & Automation Magazine - September 2020 - 155
IEEE Robotics & Automation Magazine - September 2020 - 156
IEEE Robotics & Automation Magazine - September 2020 - Cover3
IEEE Robotics & Automation Magazine - September 2020 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2010
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2010
https://www.nxtbookmedia.com