Open chrisywong opened 1 year ago
Hi @chrisywong , answering in order:
hri
package, which is used by the hri_rviz
plugins to display the skeleton. Could you try updating both of them? KeyValue(key="Last detected body ID", value=str(next(reversed(self.detected_bodies), ''))),
Please note that in single_body=False
mode, the package will not find all the bodies in an image per se but rather relies on an external body detector/tracker to provide the body IDs in /humans/bodies/tracked
and relative cropped images in /humans/bodies/<body_id>/cropped
. This kind of body detector is currently not part of the ROS4HRI released packages, so you would have to provide your own for this use case.
Hi @LukaJuricic
Thanks for the tips! I removed all the Debian packages and compiled everything from source and I no longer get that error and detection for a single person works. Unfortunately, now there's a problem with the TF tree between the upper and lower halves of the body. Detect works fine as it shows all the keypoints, but there is no tf
between torso
and body
. I am using ikpy==3.2.2
.
Hi @chrisywong,
Could you please provide us the parameters you're using to run hri_fullbody
?
Hi @LorenzoFerriniCodes ,
I'm launching ~/catkin_ws/src/hri_fullbody/launch$ roslaunch ./hri_fullbody_visualize.launch single_body:=true
.
I modified some of the default parameters for the launch file, but mostly just the debug parameters.
For hri_fullbody_visualize.launch
:
<launch>
<arg name="rgb_camera" default="/camera/color/"/>
<arg name="rgb_camera_topic" default="$(arg rgb_camera)/image_raw"/>
<arg name="rgb_camera_info" default="$(arg rgb_camera)/camera_info"/>
<arg name="use_depth" default="true"/>
<arg name="depth_camera" default="/camera/depth/"/>
<arg name="depth_camera_topic" default="$(arg depth_camera)/image_rect_raw"/>
<arg name="depth_camera_info" default="$(arg depth_camera)/camera_info"/>
<!-- console output of detected bounding boxes, meant for single body execution -->
<arg name="textual_debug" default="true"/>
<!-- publishes a TF tree of the joints, *without* performing IK kinematics to
properly align the joints' frames to the kinematci model of the human -->
<arg name="stickman_debug" default="true"/>
<!--
If 'single_body' is False, hri_fullbody waits for bodies Region of Interests to be published on /humans/bodies/xxx/roi, and it uses those RoIs to perform 3D skeleton estimation.
If 'single_body' is True, the node will not use external body detections, and instead will detect *a single* person, and provide the RoI + 3D skeleton of that person.
-->
<arg name="single_body" default="true"/>
<include file="$(find hri_fullbody)/launch/hri_fullbody.launch" pass_all_args="true" />
<!-- <node name="usb_cam" pkg="usb_cam" type="usb_cam_node">
<remap from="/usb_cam/image_raw" to="$(arg rgb_camera_topic)"/>
<remap from="/usb_cam/camera_info" to="$(arg rgb_camera_info)"/>
</node> -->
<node type="rviz" name="rviz" pkg="rviz" args="-d $(find hri_fullbody)/rviz/fullbody_urdf_visualization.rviz" output="screen"/>
</launch>
For hri_fullbody.launch
:
<launch>
<arg name="rgb_camera" default="/camera/color/"/>
<arg name="rgb_camera_topic" default="$(arg rgb_camera)/image_raw"/>
<arg name="rgb_camera_info" default="$(arg rgb_camera)/camera_info"/>
<arg name="use_depth" default="False"/>
<arg name="depth_camera" default="/camera/depth/"/>
<arg name="depth_camera_topic" default="$(arg depth_camera)/image_rect_raw"/>
<arg name="depth_camera_info" default="$(arg depth_camera)/camera_info"/>
<!-- publishes a TF tree of the joints, *without* performing IK kinematics to
properly align the joints frames to the kinematic model of the human -->
<arg name="stickman_debug" default="False"/>
<!--
If 'single_body' is False, hri_fullbody waits for bodies Region of Interests to be published on /humans/bodies/xxx/roi, and it uses those RoIs to perform 3D skeleton estimation.
If 'single_body' is True, the node will not use external body detections, and instead will detect *a single* person, and provide the RoI + 3D skeleton of that person.
-->
<arg name="single_body" default="true"/>
<node name="hri_fullbody" pkg="hri_fullbody" type="detect" output="screen">
<param name="use_depth" value="$(arg use_depth)"/>
<param name="stickman_debug" value="$(arg stickman_debug)"/>
<param name="single_body" value="$(arg single_body)"/>
<remap from="/image" to="$(arg rgb_camera_topic)"/>
<remap from="/camera_info" to="$(arg rgb_camera_info)"/>
<remap from="/depth_image" to="$(arg depth_camera_topic)"/>
<remap from="/depth_info" to="$(arg depth_camera_info)"/>
</node>
</launch>
I've tried to replicate the error using the same parameters, but everything seems to be working fine here. Could you try disabling the RobotModel
plugin and try using the Skeleton 3D
plugin?
@chrisywong any update on this?
Hi @LorenzoFerriniCodes, I am currently away and won't be able to test for another 2 weeks. I will post an update once I can.
@LorenzoFerriniCodes For some reason, everything is back to the issue I initially had with the skeleton not matching the real pose in https://github.com/ros4hri/hri_fullbody/issues/4#issue-1837083307
It's weird because I did not change anything since the last time (other than performing regular updates). All the ROS4HRI packages are built from source and not from the Debian packages, and I am using ikpy==3.2.2
. I currently no longer have the problem mentioned in https://github.com/ros4hri/hri_fullbody/issues/4#issuecomment-1670221676
I'm running into two separate problems. (Note: I switched to
ikpy=3.2.2
, but it didn't fix anything)1) When
single_body = true
When I run
roslaunch ./hri_fullbody_visualize.launch single_body:=true
, everything launches, but the skeleton pose does not match my real pose (see image).And in the terminal, I don't know the if the warning in the last line is relevant.
2) When
single_body = false
When I run
roslaunch ./hri_fullbody_visualize.launch single_body:=false
, I get an error and it doesn't do any sort of tracking and nothing is published.Any help would be appreciated.