去年发布的 Android P 上引入了针对非公开 API 的限制,对开发者来说,这绝对是有史以来最重大的变化之一。前天 Google 发布了 Android Q 的 Beta 版,越来越多的 API 被加入了黑名单,而且 Google 要求下半年 APP 必须 target 28,这意味着现在的深灰名单也会生效;可以预见,在不久的将来,我们要跟大量的 API 说再见了。
上次分析系统是如何施加这个限制 的时候,我们提到了几种方式,最终给出了一种修改 runtime flag 的办法;其中我们提到,系统有一个 fn_caller_is_trusted 条件:如果调用者是系统类,那么就允许被调用。这是显而易见的,毕竟这些私有 API 就是给系统用的,如果系统自己都被拒绝了,这是在玩锤子呢?
Attribute service#xxx.xxx.xxx.push.PushService@process at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <JIGUANG_PRIVATES_PROCESS> is provided.
Attribute meta-data#JIGUANG_PRIVATES_APPKEY@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <JIGUANG_PRIVATES_APPKEY> is provided.
Attribute meta-data#JIGUANG_PRIVATES_PROCESS@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <JIGUANG_PRIVATES_PROCESS> is provided.
Attribute meta-data#XIAOMI_APPID@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <XIAOMI_APPID> is provided.
Attribute meta-data#XIAOMI_APPKEY@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <XIAOMI_APPKEY> is provided.
Attribute meta-data#MEIZU_APPID@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <MEIZU_APPID> is provided.
Attribute meta-data#MEIZU_APPKEY@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <MEIZU_APPKEY> is provided.
Attribute meta-data#OPPO_APPID@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <OPPO_APPID> is provided.
Attribute meta-data#OPPO_APPKEY@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <OPPO_APPKEY> is provided.
Attribute meta-data#OPPO_APPSECRET@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <OPPO_APPSECRET> is provided.
Attribute meta-data#com.vivo.push.app_id@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <VIVO_APPID> is provided.
Attribute meta-data#com.vivo.push.api_key@value at tempFile1ProcessTestManifest7039673500103366995.xml requires a placeholder substitution but no value for <VIVO_APPKEY> is provided.
See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.
手眼标定行业内分为两种形式,根据相机固定的地方不同,如果相机和机器人末端固定在一起,就称之为“眼在手”(eye in hand),如果相机固定在机器人外面的底座上,则称之为“眼在外”(eye to hand)。
eye to hand 眼在外
eye to hand 眼在手
二、手眼关系的数学描述
1. eye in hand,这种关系下,两次运动,机器人底座和标定板的关系始终不变。求解的量为相机和机器人末端坐标系的位姿关系。
2. eye to hand,这种关系下,两次运动,机器人末端和标定板的位姿关系始终不变。求解的量为相机和机器人底座坐标系之间的位姿关系。
手眼标定eye in hand 和eye to hand 的区别主要是机器人那边,一个是end相对于base,另一个是base相对于end。千万注意。
三、AX = XB问题的求解
旋转和平移分步法求解:
Y. Shiu, S. Ahmad Calibration of Wrist-Mounted Robotic Sensors by Solving Homogeneous Transform Equations of the Form AX = XB. In IEEE Transactions on Robotics and Automation, 5(1):16-29, 1989.
R. Tsai, R. Lenz A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/Eye Calibration. In IEEE Transactions on Robotics and Automation, 5(3):345-358, 1989.