-
Notifications
You must be signed in to change notification settings - Fork 348
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature Contribution] (Add Azure Kinect Camera to PyRobot) #28
Comments
Hi, yes Azure Kinect camera would be a great feature to add to PyRobot and LoCobot. I agree, Azure Kinect could be a potentially better and relatively inexpensive alternative to Realsense D435. However, I am a little worried about the form factor (size and weight) of the Azure Kinect. In the sense that it might be a lot of weight for the pan and tilt motors on the LoCoBot to take. Overall, It is a great feature to add and see on LoCoBot and PyRobot. Regarding your workflow ( We will be happy to help you and assist you in each and every step of it :) ) To begin with, your work flow looks good to me.
Other things you might be missing include, (Again, I will be happy to help you and assist along the way)
Looking forward to this integration! Please let me know if you have anymore questions, doubts, etc. |
Hey Kalyan, thank you for your detailed reply. I'm also worried about whether Dynamixel Motors can handle Azure Kinect's weight (440 g). Can you give me some instructions that how to do a test about it (like call corresponding PyRobot built-in motor methods after mounting the camera)? If the motors can not do expected work, can we switch to the more powerful ones? After all, for me an active camera is more preferred than a fixed-mounted camera. By now, I has already gotten almost all components of locobot (except the arm). After building the locobot and getting familar with PyRobot codes, I'll start to work on the installation scripts and My Update on Azure Kinect Integration:As for the Azure Kinect, it's a pretty new product, so its official ROS Driver only support to work in Ubuntu 18.04 & ROS Melodic environment. But I just made it can work in Ubuntu 16.04 & ROS Kinetic environment by personal workaround. So the camera now should work in PyRobot's development environment. Let's keep in touch in this issue and share any updates :) |
Hi, Yes, we should test if the the current camera pan and tilt motors can take the load. The easiest way to test it would be to tape the kinect to the tilt motor clamp and command the pan and tilt motors. Changing the motors is not our first option, but if the test fails, we would be willing to consider developing develop a version of LoCoBot with higher capacity pan and tilt motors to accomodate the Kinnect. You are more that welcome to take a stab at it send us the designs. We will be happy to accommodate them on our LoCoBot website. |
Hey Kalyan, Should I add Azure Kinect's codes on PyRobot's master branch or develop branch? |
Please make it a pull request for the develop branch. Thanks! |
Hey Kalyan, I dived into PyRobot's codes, before add Azure Kinect ROS Driver into it, I got following questions:
Thanks. |
I just tested the Dynamixel motor loading Azure Kinect at the extreme poses, and it works! Here is the test video on YouTube. To mount Azure Kinect, what to need to do is just make the camera adhere Motor 9 directly. So no modification for the 3D printing parts is required. I'm also gonna modify the LoCoBot layout to make the robot's hardware more compact, so for the Azure Kinect Feature, corresponding robot's urdf files might not provided in the first pull request. |
Wow, that's a great video! Glad to know that the current dynamixel pan and tilt motors can take the load of Azure Kinect. Could you please confirm how you mounted the Kinect on the tilt motor (motor 9). It looks like you glued it? If so, we would be happy to work with you and produce a 3-D printed mount for the Kinect. We also got a Azure Kinect SDK. We will be performing some of our own tests in parallel. Please let us know if you need any help software or hardware wise. |
Yep, now I just glue the Azure Kinect directly. To make the camera absolutely safe, mounting on a 3-D printed part is do necessary. Also I'm very glad to do test on Azure Kinect with you in parallel. I incorporated the Azure Kinect as a choice of The current issue is that we need to get precise transformation between Azure Kinect and |
Here are the answers to your questions,
|
Hey Kalyan, I tested LoCoBot within Azure Kinect on some examples, and it worked. But I run the issue with camera calibration when using Azure Kinect to collect calibration data. The bug happend at the end of this codes snippet, the assert failed. The reason is that the links transformations calculated by accumulatedly and directly are much different. I tried to debug it by printing the accumulated transformation and direct transformation, and comparing their difference. What really surprised me is that this error happened "randomly". The two transformation are usually the same, but sometimes these different transformation happend on Here is the I used the default calibration file What's more, it would be great if you can give me any clues of following questions:
Thanks for your support and help. |
Hi Peng, This is very strange error indeed. How big in the error in the assert condition? pyrobot/robots/LoCoBot/locobot_calibration/scripts/collect_calibration_data.py Lines 148 to 162 in 16a415f
This could be a side effect of wrong motor values. Here are the answers to your questions,
One sure shot way to debug if it is a hardware is to run the arm-related tests in 'pyrobot/tests' folder. Please let me know about it. Thanks! |
Hey Kalyan, Just a update. I uploaded a video about Rviz when did camera calibration here. It seems all motors values would suddenly return 0 (default value) periodically. That's why the camera calibration failed. I guessed the issue may result from DYNAMIXEL U2D2 or DYNAMIXEL Power Hub. I'll replace these hardwares and figure out whether it will work. Thanks. |
Hi Peng, Thanks for the update. Sure, let me know if the motor issues persist. Looking forward to the integration! :) |
Hi Peng, how is the feature integration coming along? Please let us know if you need any assistance. |
Hey Kalyan, I already made the camera calibration work. Acutally Azure Kinect ROS Drive will defaultly publish an empty "joint_state" ROS topic, it will overwrite the "joint_state" published by the motors on robot. That's why the camera calibration failed when the robot incorporating with Azure Kinect. I also made corresponding 3D printed part for Azure Kinect mounter. However, I'm currently busy with personal affairs. Anyway, I'll do feature integration by mid Dec. |
Hi @msr-peng, any updates? We will be happy to help you if you have further questions. |
Hi @kalyanvasudev , I'll resume the work about Azure Kinect this week. Btw, do you know the details about LoCoBot hand-eye calibration algorithms? If so, can you give me the corresponding links or paper? I didn't find the algorithms that can apply to the situation of pan-tile camera and robot arm. |
Hey @kalyanvasudev, I looked through the latest PyRobot develop branch, there is already a azure_kinect folder. I noticed you created the To my best knowledge, the only difference is that Azure Kinect has different RGB-D rostopics and camera optics frame names, different resolution (1280, 720) and Although Azure Kinect has different mechanism to get depth info, for me I just made To make Azure Kinect work with arm, gripper and base, can I create Another problem is grasping. Grasping model can infer the image patch correctly, but the arm can't grasp the corresponding position. I guess that hand-eye calibration didn't get accurate results. The Azure Kinect position for my LoCoBot is lower than LoCoBot RealSense. I used the initial transform for RealSense to do calibration optimization. Can this cause trouble in calibration? Besides, it would be great if you know the corresponding calibration algorithms for pan-tilt camera and arm calibration. I'm jsut curious the calibration details. |
Btw, here is my STL file for Azure Kinect Supporter. |
I'm gonna customize the PyRobot with Microsoft's new Azure Kinect Camera out of following considerations:
Do you think it's a good feature to be added into PyRobot?
If it is, my expected workflow of this feature is:
locobot_install_all.sh
file, add installation of Azure Kinect SDK and its ROS Driver, and dependencies for calibration.Is there any other aspects of working that I fail to consider?
The text was updated successfully, but these errors were encountered: