A main objective of developing robots is to enable them to plan and execute tasks. Often, the tasks we want robots to perform involve interacting with objects through grasping, inserting, etc. An intelligent robotic system should be able to flexibly operate in noisy and uncertain realworld environments by integrating information from various sensory modalities. The human sensorimotor loop receives input from a variety of sensory sources and produces motor commands. An important sensory source in this loop is visual perception, which provides rich information about the surrounding environment. Visual input is important for humans to interact with the world around them and there is substantial experimental evidence of visuomotor coupling across many regions of the brain (Attinger et al. 2017). This coupling allows us to foveate to and track visual features and then manipulate objects using our limbs and tools.
In robotics, techniques using visual feedback to control robots are referred to as visual servoing. There are two main methods of visual servoing: Image-based visual servoing (IBVS) and Position-based visual servoing (PBVS). IBVS extracts visual features, and then the control law minimizes the errors between the current and desired feature locations in the image. PBVS uses the extracted visual features to infer the pose of the observed object, and then the control law minimizes the error between the current and desired pose. In general, the goal of these methods is to achieve a desired position of the tracked object using information extracted from the image.
Standard methods for visual servoing require calibration of the robot kinematics and the cameras. Kinematic calibration often requires a precisely manufactured device
or a laser-based depth sensor for providing accurate measurements of the pose of the end-effector. Camera calibration often requires a routine using a checkerboard placed at different locations in view of the camera to calibrate the intrinsics and extrinsics parameters. These procedures must be repeated each time a change is made to the robot’s structure or the camera positions.
This is in stark contrast to the flexibility with which humans can perform control. Consider if instead of the visual servoing algorithm, we allow a human to operate a joystick controlling the robot’s joints. By observing how the robot moves in response to the joystick, the human would quickly learn to control the robot. They would be robust to changes in perspective or modifications to the structure of the robot. To replicate this ability in an algorithm, we need to consider the perception and control problems simultaneously, so that we can adapt our visual model or control policy in response to changes.
In this paper, we present a method for learning to control a robot from visual feedback. We learn a generative model from actions (sent to a joint controller or Cartesian controller) to feature pixel coordinates in an image. The model can be learned with no prior information about the robot, features, or camera. Inference in this model allows us to accurately position the robot end-effector using those visual features. This circumvents the need for explicit kinematic and camera calibration procedures. Additionally, it allows us to be unaffected by the errors that may be introduced by inaccurate calibrations. We can learn the parameters of this model with few samples and can continue to learn online, allowing our system to be deployed quickly and be robust to changes to the setup.
Related Work
Image-based visual servoing Most methods for image-based visual servoing attempt to estimate the image Jacobian. The image Jacobian governs how changes in the robot state (joint state or Cartesian pose) will produce changes to the features’ pixel coordinates in the image. Then, given this Jacobian and the current and desired feature pixel coordinates, we can backpropogate the errors in the pixel space to errors in the robot’s state space. This error in the state space is used to derive a command to modify the robot’s state. Kragic and Christensen (2002) provides a more complete survey of the variety of methods for visual servoing, in the context of manipulation tasks.
The commonly used software package VISP (Marchand et al. 2005) implements various methods for visual servoing, including for an eye-to-hand setup. The control law they use is as follows:
is the robot Jacobian, expressed in the end-effector frame, which is a function of the joint states q.
defines the transform between the end-effector frame and the camera frame.
is the interaction matrix which captures how changes to the 3D positions of the features relate to the changes in their pixel locations. The error between the current and desired coordinates is e, where coordinates include both pixel coordinates x and y and the distance from the camera origin z. With this control law, we compute
, the velocity command to send to the joints.
is a gain term that controls the step size of this command and allows for exponential convergence of the error.
To find , we must have access to the robot kinematic model and the joint states.
is the output of a camera extrinsics calibration. The interaction matrix
is approximated online. Our model is similar to VISP in terms of its structure, however while VISP requires the above values to be provided, our method is able to learn them from data.
Independent camera and kinematics calibration Previous work has proposed methods to calibrate the kinematics and camera parameters. Tsai and Lenz (1989) present a method for calibrating a eye-to-hand setup, along with methods for camera calibration (Tsai and Lenz 1980) and kinematic calibration (Lenz and Tsai 1989). While this three-stage procedure computes the same parameters as our model, they require a specific setup to do so. They require a calibration board and accurate readings of the joint states. In addition, they must individually move each of the joints during the kinematic calibration procedure. Our method does not have either of these constraints and is robust to noisy joint state measurements.
Camera calibration is a deeply studied topic. Zhang (2000) proposed a technique for calibration using a planar pattern
observed from multiple viewpoints. This algorithm has been implemented in the software packages Robot Operating System (ROS) (Quigley et al. 2009) and OpenCV (Bradski and Kaehler 2000) and is a commonly used method for calibration in robotic systems. This method also requires a calibration board. And further, to use this method for an external camera (a camera not attached to the robot arm), an on arm camera is also needed to simultaneously view the calibration board. In our method, we use many of the same techniques as are used in camera calibration. However we are able to do so with only the external cameras and without the need for a calibration board.
For camera intrinsics calibration, in a step away from requiring a calibration board, Fraser (1997) and Faugeras et al. (1992) propose methods for self-calibration that are able to identify the intrinsics parameters by tracking features as they move across an image. Hemayed (2003) provides a survey of other useful methods for self-calibration. In this work, we do not consider the identification of intrinsics parameters, since the factory-provided calibration served as a sufficiently good initialization for our optimization procedure. If this were not the case, we would also apply these self-calibration methods.
In kinematic calibration, there has been work on attempting to learn a robot’s kinematics model. Hollerbach and Wampler (1996) provides a survey of the methods for open-loop and closed-loop kinematic calibration. Ikits and Hollerbach (1997) uses a plane constraint on the robot endpoint to make it feasible to solve for the kinematic parameters. Renders et al. (1991) proposes a calibration method based on a maximum likelihood approach to identifying model errors, using a device for accurately measuring the length of motions by the end-effector.
Motivated by the need for a computationally efficient solution for inverse kinematics, D’Souza et al. (2001) developed a spatially localized learning approach for inverting the kinematics. Connecting kinematics learning to human motor learning, Rolf et al. (2010) shows how goal babbling can be used to learn an inverse kinematics model from few samples. Atkeson (1989) also attempts to understand the information processing issues involved in motor learning and evaluating their biological plausibility. In all of the above work on kinematic learning, either the states of the joints or the pose of the end-effector are observed and used for learning. Our method is able to be learn with only observations of the commands sent to a noisy controller and images. In addition, our method does not require any measurement device or constraint on the data collection, as it can be learned from random motions.
Model-free approaches Another class of methods for visual servoing are uncalibrated methods. The uncalibrated methods directly estimate the image Jacobian and use it for guiding servoing.
For the setting of a calibrated robot but uncalibrated cameras, a variety of methods have been proposed. Yoshimi and Allen (1994) leverages the fact that features will trace ellipses on the image as the camera is rotated. However, this method heavily relies heavily on being able to manipulate an axis of the camera, which is not applicable to our setup with an external camera. Liu et al. (2006) proposes a depth-independent interaction matrix which is an improvement on the types of methods implemented in VISP that require both pixel coordinates and depth values. Malis (2004) proposed a visual servoing method that is invariant to changes in the camera intrinsic parameters. Recent work by Shademan et al. (2010) has made these procedures more robust to outliers and noise using an M-estimator.
There has also been previous work on visual servoing when both the robot and cameras are uncalibrated, the setting that we are intersted in. Hosoda and Asada (1994) and Hosoda et al. (1998) have presented methods for uncalibrated visual control for static targets and fixed cameras using Broyden updating of the Jacobian estimate. Piepmeier et al. (2004) uses a dynamic quasi-Newton method for Jacobian estimation and extends on the previously stated works by tracking a moving target.
Our work departs from these model-free, uncalibrated methods. These model-free methods learn local differential models while our method learns a global model. Model-free methods will always have an increased sample complexity, which will make learning slower and will only be beneficial in setups outside our scope (i.e., control of elements that are not robotic arms).
Joint camera and kinematics calibration The previous work most related to our proposed method are those which perform a global optimization over the kinematic and camera parameters. Puskorius and Feldkamp (1987) does this optimization, but requires tracking of a fixed calibration point from multiple viewpoints. Zhuang et al. (1995) improves on this procedure but still requires a good initialization of the parameters to be provided. Both these methods need to observe the joint states of the robot. Our method is able to perform the global optimization with no prior information and can be done without directly observing the joint states, only the actions sent to a noisy controller.
Deep reinforcement learning of control Recent work has explored learning control using deep neural networks. Deep reinforcement learning has been successfully applied to a variety of domains, as reviewed in (Arulkumaran et al. 2017), including continuous-action domains (Lillicrap et al. 2015). The authors of (Levine et al. 2016) study learning of perception and control, end-to-end. They design a policy search algorithm and a convolutional neural network (CNN) architecture to learn a policy that produces joint torques given image observations. A similar method is used in (Levine et al. 2018), to learn hand-eye coordination to perform grasping tasks. A model-based approach to this problem is taken in (Finn and Levine 2017) by pairing a CNN, which predicts future image frames given the current image and control signals, with a modelpredictive controller. In general compared to these neuralnetwork based methods, our model has significantly fewer parameters and therefore requires much less training data to learn. Our method, like Finn and Levine (2017), learns a generative model, however does so with a specialized modular formulation rather than using general function approximation. This endows our approach with a much improved sample efficiency, strong generalization to test
data, and the ability to quickly adapt to new structural setups, for example when cameras and objects are changed.
Contributions
The contributions of our work are:
• We propose a learning procedure that enables consistent convergence of end-to-end learning of an arbitrary, uncalibrated robot observed by an arbitrary number of uncalibrated cameras, for which no other specific information is available.
• Our global formulation enables us to match target locations of image features in significantly fewer iterations than state-of-the-art methods in visual servoing.
• By explicitly modeling noise, we can accurately control noisy robots. We demonstrate this by performing grasping and tight-fit insertion on a Baxter robot with an inaccurate controller.
• To the best of our knowledge, ours is the first method that can learn accurate control from only observing the actions sent to a noisy controller and image features. Previous methods require observations of the robot’s joint states.
• We present quantitative measures of the relative difficulties of learning kinematic, structure, and camera parameters.
Our method centers around learning the generative processes depicted in Figure 1 and Figure 2. The nodes of the model correspond to the following values:
• - joint states at time t •
- Cartesian pose of the end-effector in the origin frame at time t
• - 3D coordinates of the feature points in the origin frame at time t
• - features’ pixel coordinates in the images of each camera at time t
In Figure 1, corresponds to the desired delta of the joint states that is sent to a joint controller. In Figure 2,
corresponds to a desired transformation of the end-effector pose that is sent to a Cartesian controller. We assume the image is always observed, but in the variety of settings we consider in the following sections, a different combination of the remaining nodes will be observed and unobserved. The final setting we consider is one where only the actions and image are observed, as shown in these figures.
In the following sections, we describe the components of the model and their specific parametrizations.
Kinematics
Forward kinematics govern how joint angles produce a Cartesian pose of the end-effector. The forward kinematics are robot specific as they depend on the robot’s link lengths, rotation of the joints, and relative transformations between joints. For our model, we parametrize the robot kinematics using the DenavitHartenberg (DH) convention
Figure 1. Bayesian network describing the generative model of the features observed in an image from the actions sent to a joint delta controller. Shaded nodes are observed. All the other nodes are unobserved, except as detailed in some of the experiments.
Figure 2. Bayesian network describing the generative model of the features observed in an image from the actions sent to a Cartesian controller. Shaded nodes are observed. All the other nodes are unobserved, except as detailed in some of the experiments.
(Hartenberg and Danavit 1964). For each joint, there are 4 DH parameters:
These 4 parameters along with the state of the joint define a homogeneous transformation corresponding to that joint:
When we compose these transformation for all joints of the robot, we get a transformation to the end-effector frame from the base frame. The base frame of the robot does not necessarily need to correspond to the origin frame. We additionally parametrize the 6D pose of the base frame of the robot as the transformation B.
We collect the DH parameters for all joints into the vectors . The state of each joint at time t is contained in the vector
which is of length n (degrees of freedom of the robot).
is the state of joint i. The forward kinematics, which represents the transformation to the end-effector frame from the origin frame, is defined as follows:
We choose the DH parametrization specifically because it is complete to describe arbitrary robot kinematics. It is also a
minimal representation and only requires simple constraints, like positivity, that are easy to enforce. A disadvantage to note is that DH parameters are singular when adjacent joint axes are parallel, since there will be large changes to d for even small deviations in the axis orientations. Most robots do not have parallel axes so this problem does not arise. For such robots we can still apply the presented method but will use a non-minimal representation with constraints.
Henceforth, we will refer to all the kinematics parameters and base frame parameter B collectively as R.
Structure
In order to find the correspondence between the robot’s configurations and the observed images, we track features that are rigidly attached to the end-effector. Since features are points, we can parametrize them by their 3D coordinates. Note that these are relative coordinates defined in the end-effector frame. We collect these 3D coordinates coordinates for m feature points into the matrix F. Then, given the homogeneous matrix P, corresponding to the pose of the end effector in origin frame, the coordinates of the features points in the origin frame are computed as follows:
While here we have assumed the features are attached to the end-effector, these features can be attached to any of the joints of the arm. More coverage of the joints will allow for better inference of the robot’s configuration. For the features that are attached to other joints, P will be the Cartesian pose of that joint and F will contain the relative coordinates in that joint’s reference frame. Though if we seek to accurately control the end-effector then we must track features on the end-effector.
By learning the feature’s coordinates, we are learning the structure of an object attached to the arm. Therefore, many of the same techniques for learning structure from multiple viewpoints can be applied for our model.
Cameras
For the projection of these features onto the image, we assume a pinhole camera model. This model consists of the extrinsics matrix that is derived from the camera’s pose in the world and the intrinsics matrix that defines how 3D points in the camera frame are projected onto the image plane at certain pixels. The extrinsics matrix is a rigid transformation that is the inverse of the camera pose in the origin frame. It is parametrized by R and t which define a 6D pose. The intrinsics matrix is defined by the focal length in x and and
) and the principal point in x and
and
). There are additional distortion parameters that can be modeled, but we observed that this had little effect on the performance of our method. The extrinsics matrix E and intrinsics matrix K are defined as follows:
The 3D coordinates of m features in the origin frame are collected into the matrix M. The projection of those points to pixel locations is as follows:
IK E
Note that the projection onto the image plane, which transforms from 3D to 2D, requires a normalization of the homogeneous vector and therefore is a nonlinear operation.
Here we have shown the camera projection for a single camera. When there are multiple cameras, we will have different intrinsics and extrinsics matrices for each camera. We collect the intrinsics and extrinsics parameters for a single camera into V . We then have ...
for the c different cameras.
Summary
For completeness, we summarize how each of the modules described in the above sections map to the generative models in Figures 1 and 2. Given the joint states , the forward
kinematics model (defined by R) will produce a Cartesian pose of the end-effector in the origin frame. The features are at relative coordinates F in the end-effector frame so when they are applied to the pose
it will produce the 3D coordinates
of the features in the origin frame. Finally, these coordinates
are projected onto camera i (defined by
) and produce an image where those features are at pixel locations
.
For an n degree of freedom robot, with m features tracked, observed in c cameras, the number of parameters of our model is:
Compared to deep neural networks, this model has significantly fewer parameters. As we will discuss in later sections, this is important distinction that gives improved sample-efficiency and generalization.
In this section, we summarize the learning procedure when the available data is images and the corresponding joint states. In this setting, we do not need to consider the actions because we assume that if we can read the joint states then we can also command the robot by directly sending joint states.
Camera and Structure Parameter Learning
Given images in which we have detected the features’ pixel locations (in c cameras), we seek to learn the camera parameters for each camera, the features’ relative 3D coordinates in the end-effector frame, and the Cartesian pose of the end-effector at each timestep. Note that the Cartesian pose is not a parameter of the model but rather a node in the generative model. We have found that this truncated model, which only considers the poses, 3D points, and projections, is feasible to learn, independent of the joint states and kinematic parameters. It however provides less precise inference of the end-effector 6D pose. We discuss this in further detail in a later section.
The learning procedure simultaneously optimizes the above mentioned parameters. The function is a quadratic error between the generated and actual pixel coordinates, which is computed only over the features that are observed in the actual image. This error is commonly referred to as the reprojection error. The optimization is:
We assume we have c cameras and have collected data at T timesteps. are the transformation matrices of the end-effector’s pose at each timestep.
are the extrinsics and intrinsics parameters of each of the c cameras.
contains the pixel coordinates of the features in camera i at timestep t. The loss in Eq. (2) is the error between pixel coordinates contained in
and the pixel coordinates generated from poses
through our partial model. In, Eq. (3), the superscipt o on
indicates that these pixel locations are observed and the observed values are used in the optimization.
However, this learning is prone to convergence to sub-optimal local minima and, as such, it is important to provide a good initialization for this optimization. The following sections describe two different methods for computing a good initialization of and
. We have found that a random initialization of F is sufficient and does not affect convergence.
Initialization by Triangulation
If the cameras are placed such that in many timesteps features are observed in multiple cameras, we can leverage this to compute an initialization for our optimization. With 5 feature correspondences between cameras, we can estimate the fundamental matrix between the cameras (Nist´er 2004). This means we only need 5 timesteps at which a feature was observed in both cameras. From the fundamental matrix and an estimate of the intrinsic parameters (we use the factory-provided intrinsic estimate) we can get the essential matrix. Then from this essential matrix, we can recover 4 possible solutions for the camera baseline, the transformation between the two cameras. To select one of these 4 solutions, we triangulate the observed points to 3D and select the configuration of the cameras that places the most observed features in front of both cameras.
This procedure can be repeated for pairs of cameras that observe 5 of the same features until we have accounted for all the cameras. If a camera is unable to be added through, this procedure because it does not observe sufficiently many features, then we can ignore it from the initial optimization and reincorporate it later in the learning procedure.
With this estimate of the poses of the cameras, we can triangulate all the features observed in multiple cameras to 3D. Then at each timestep, we have the 3D coordinates of those features. Now, between two timesteps for which there are at least 3 of the same features triangulated, we can estimate the optimal (in terms of least square error) rigid transformation between the feature coordinates at the timesteps (Arun et al. 1987). This optimal transformation can be found by taking the vector between the centroids of the coordinates as the translation and then performing an SVD to recover the rotation. We repeat this for pairs of timesteps that share at least 3 triangulated features until we have accounted for all timesteps. If we are unable to add a timestep because it does not share sufficiently many triangulated features with another timestep, we ignore it.
Since the features we track are rigidly attached to the end-effector, the transformations between the features in 3D at two timesteps is equivalent to the transformation of the end-effector pose between those two timesteps. We can compose these transformation across timesteps to recover an estimate of the end-effector Cartesian pose at each timestep.
This procedure yields estimates of (a) the poses of the cameras; (b) the the pose of the end-effector at each timestep.
Though triangulation in general can be inaccurate, we have found that it provides a sufficiently good initialization for the learning.
Initialization by Structure from Motion
Since the Triangulation method depends on two cameras, we fall back to using a Structure from Motion procedure when we only have a single camera. While, most often, Structure from Motion is applied to settings with a fixed object and a moving camera, the same method can be applied to our setting of a fixed camera and a moving object (the robot arm). We apply an incremental Structure from Motion procedure that chooses a pair of images that has feature correspondences, estimates the camera baseline, and triangulates the features to 3D (Schonberger and Frahm 2016). Then, new images that observe the already triangulated features are sequentially added. As we add more images, our coverage and estimation of the structure improves. When a new feature is observed by two images, we can triangulate that new feature and add it to our model of the object’s structure.
At the end of this procedure, we will have discovered a) the structure of the object; b) the poses of the centroid of that object at each timestep, which then let us find the rigid transform of the end-effector pose; and c) the poses of the cameras. Again, while this procedure may have inaccuracies, it provides a sufficiently good initialization for the learning, in practice. As is described in a later section, this procedure is quite sensitive to the two initial views that are selected.
Kinematic Parameter Learning
We seek to learn the robot kinematic model parametrized by R. While the previous section learned the end-effector Cartesian pose, a node in the generative model, the kinematics learning procedure only learns the kinematics parameters of the model.
The function is the Frobenius norm between the transformation matrices G and A, corresponding to the generated and actual end-effector Cartesian pose, respectively. We have found, in practice, that there are many Cartesian pose errors that work, including quaternion error.
The optimization is as follows:
The loss in Eq. (4) is the error between the pose generated from joint states through the model and the poses
. In, Eq. (5), the superscript o on
and
indicates that the joint states and Cartesian pose are observed.
is not directly observed but we set it to be the
that is output from the Camera and Structure Parameter Learning.
Note that we assume the user will provide the number of degrees of freedom n implicitly, by providing the joint states. Therefore we can include n sets of DH parameters in our kinematic parameters R.
Unlike the learning of the camera and structure parameters, we have found that this optimization can converge from a random initialization of R.
Since we observe the joint states and the feature pixel locations
, one might attempt to directly learn the function from joint states to pixel locations. However attempting to learn this from a random initialization is infeasible, as it consistently converges to sub-optimal local minima. The output of the learning discussed in Camera and Structure Parameter Learning and Kinematic Parameter Learning provide an initialization of the parameters from which the end-to-end learning can converge to a good solution.
Additionally, the end-to-end learning is important for improving the accuracy of the learned model. While the previous stages of learning might individually converge to good solutions, composing them and using them to generate feature pixel coordinates from joint positions may not yet be accurate. This is because the end-effector Cartesian pose estimated in the first stage of learning has errors, and thus the kinematic model learned from those poses will also have errors. Optimizing all the model parameters simultaneously allows us to correct for these errors.
The end-to-end learning optimization is as follows:
We use superscript f in Eq. (7) to denote that these are the final settings of each of these parameters. The loss in Eq. (6) is the error between the pixel coordinates in and the pixel coordinates generated through our full model from the joint states
through our full model. In Eq. (7), we indicate that the joint states
and images
are observed.
We initialize F and , to be the
and
output from the camera and structure learning in Eq. (3). We initialize R to be the
that is output from the kinematics learning in Eq. (5).
Here we consider the setting where we only observe the images and a noisy estimate of the robot’s state (joint states in the case of joint controller and end-effector Cartesian pose in the case of a Cartesian controller).
Noisy Cartesian Pose
Since we are operating a Cartesian controller, we do not need to learn the robot kinematics. We only need to learn the camera and structure parameters and the true Cartesian pose of the end-effector at each timestep, correcting for the noise. Since we get a noisy estimate of the pose of the end-effector,
we can bootstrap our computation of the initialization (either through triangulation or structure form motion) with these estimates. Then our optimization is as follows:
The loss in Eq. (8) extends the loss in Eq. (2) with an the additional term that penalizes the learned pose from differing from the observed pose. In the additional term, is the noisy estimate of the end-effector pose that we observe.
is a weight that captures how much we trust the noisy pose estimates. It will vary inversely proportionally with the variance of the noise in the observed Cartesian pose.
In both the above equations, we have both and
.
are the Cartesian poses that we learn, so they are free parameter in the optimization process.
is the Cartesian pose that we observe, which is noisy.
Noisy Joint States
We observe noisy estimates of the joint states at each timestep. We perform the Camera and Structure Parameter Learning and Kinematic Parameter Learning using the noisy joint state estimates, which will produce an inaccurate model but serves as a good initialization. The function is an error between joint states. The optimization to correct the inaccurate model is:
The loss in Eq. (10) extends the end-to-end loss in Eq. (6) with an additional term that penalizes the learned joint states from differing from the observed joint states. In the additional term, is the noisy estimate of the joint states that we observe.
is a weight that captures how much we trust the noisy joint estimates. Again, it will vary inversely proportionally with the variance of the noise in the observed joint states.
and
appear in both the above equations.
are the joint states that we learn.
are the noisy observations of the joint states.
Note that both the above settings contain the noiseless state setting as a special case. As the noise goes to zero, we can increase and recover the exact learning equations of the noiseless case as shown in Camera and Structure Parameter Learning and End-To-End Learning, respectively.
Here we consider the setting where we cannot read the state (joint states or pose of the end effector) of the robot, but only the actions that we send to a noisy Cartesian or joint controller and the image features. This setting is both theoretically and practically interesting as it allows us to demonstrate how uncertainty can be handled in our model in order to improve control of robots with inaccurate controllers.
Noisy Cartesian Controller
In the case of a Cartesian controller, the actions we send are desired transformations of the end-effector. We first simply assume the actions are noiseless and compose them to get an estimate of the end-effector pose at each frame. Then independently of this, we learn the camera and structure parameters and end-effector pose at each timestep as is done in Camera and Structure Parameter Learning and Kinematic Parameter Learning. Now we have two estimates of the end effector pose that are within an arbitrary scaling and transformation of one another. We run an optimization to find a scaling and transformation that minimizes the pose error between these independent estimates of poses. Then we apply this scaling and transformation to the learned poses, structure parameters, and camera extrinsics. Now we have end-effector poses that are more consistent with the actions as well as the same reconstruction error from the independent learning of camera and feature parameters. In the final stage, we run the following optimization:
The loss in Eq. (12) modifies the loss in Eq. (8) with an additional term that penalize consecutive end-effector poses differing from the commanded transformation at that timestep. Only the actions
and pixel coordinates
are observed.
Noisy Joint Controller
In the case of a joint controller, the actions we send are desired deltas of the joint angles. We first learn the camera and feature parameters as is done in Camera and Structure Parameter Learning. Then, we learn the kinematics parameters as is done in Kinematic Parameter Learning, however instead of using the ground truth joint angles, which are unavailable, we assume the joint deltas are noiseless and compose them to get joint angles at each step. Then we run the end-to-end learning from Section End-To-End Learning. In the final stage, we make the joint angles a free parameter and run the following optimization:
The loss in Eq. (14) modifies the loss in Eq. (10) by having the additional term penalize consecutive joint states differing from the commanded delta of the joint states at that timestep. Only the
and pixel coordinates
are observed.
It is important to note that the parameters of our model do not necessarily correspond to the true physical setup. While a properly learned model can accurately generate image pixel locations from joint states, the latent variables are non-physical. There is a degeneracy up to an arbitrary scale and rigid transformation. For example, if we scale up, rotate, and translate the space, we can produce an equivalent model in terms of the generation of features’ pixel coordinates from joint states.
To resolve this degeneracy, we would need information from the actual physical setup. If we provided the actual scale of the structure or the camera extrinsic parameters we could correct the scale ambiguity. Additionally if we corrected the base frame Cartesian pose or gave the true camera extrinsics, we could correct the transform ambiguity. However as our demonstrations show, physicality is not necessary in most visual control settings.
The optimizer we use for learning in this model is the quasi-Newton method limited-memory BFGS (Liu and Nocedal 1989) which approximates the Hessian matrix to make updates. All of the forward computations in our model are differentiable and the gradients of all parameters can be computed analytically. This allows for fast and accurate updates, which improves the overall efficiency and performance of the learning procedure. We use Pytorch for automatic differentiation and optimization (Paszke et al. 2017).
Additionally, we have found that learning using minibatches of the dataset can help to escape local minima. We implemented a version of L-BFGS that first learns on random minibatches of the data before a final period of learning with all the data.
Using our learned model, we would like to be able to efficiently and accurately control the robot using visual feedback. Specifically, given target locations of the features in the image, we want to be able to command the robot to match those targets. This will involve inferring the end effector pose and corresponding joint states that would place the features at the target positions. Since we have the learned the structure of the features in the end-effector frame as well as the camera parameters, when given target pixel locations of the features, we can infer the end-effector Cartesian pose with the Perspective n Point algorithm (Lepetit et al. 2009). Then, with that end-effector pose and the kinematic parameters of the robot, we can solve the standard inverse kinematics (IK) problem to recover the joint states of the robot (Beeson and Ames 2015). Since the map from joint states to end effector pose is non-injective, the IK procedure can return multiple solutions for the joint states. When we are operating the robot by directly commanding joint states, this does not pose a problem because we can command the robot to any one of the joint state solutions and we will achieve the feature locations in image space. However when we can only command desired deltas of the joint states, if we infer our current joint states incorrectly, then the joint deltas we will send to the robot will not result in the desired motion. We can solve this issue in two ways. The first is by tracking features on earlier links of the robot (those before the end effector). Doing so will allow us to infer those earlier joint’s states and help us filter the joint states output by the IK. Another method to solve this is by finding the joint state that is most consistent with the actions that we have taken. Since this does not require tracking of any additional markers, we chose to use this method.
Now given the end effector pose and joint states of our current and target locations, we can properly command the robot. If we are commanding the robot with joint states directly, then we will simply move to the joint states inferred by our model. If we can only command the robot using deltas in joint or Cartesian space then we will compute the delta between our inferred current state and inferred target state and send this as a command. With an ideal model and system, we will match the target features accurately in one motion. In our experiments, we will see that when using an accurate robot this is possible. However with noisy controllers, this procedure might need to be repeated several times before the target features are matched.
In this section we review specific properties of our model. We discuss the importance of the end-to-end learning, the speed of inference, and the effectiveness of the complete learning procedure.
End-to-End Learning
We have found that end-to-end learning of all the model parameters can greatly improve the model’s performance. Table 1 shows the reconstruction errors achieved with and without learning end to end. “Before end-to-end” means the camera and structure parameters were learned first and then the kinematic parameters. “After end-to-end” initializes from there and learns all parameters simultaneously.
However, when learning the model parameters, it is insufficient to learn all of them simultaneously from random initialization. Instead we found that learning subsets of the parameters in stages, with each stage using the result of the previous one as initialization, had the best performance.
In Table 2, we compare the average convergence in three settings: (1) learning all parameters simultaneously (2) learning camera and feature parameters and then all parameters simultaneously (3) learning camera and feature parameters, then kinematic parameters, and finally all simultaneously, which performed best. In each of these we use 600 training iterations.
Table 2. Stages of optimization
End-to-end learning is practically important because when independently calibrating kinematics and cameras, errors in one calibration can produce errors in the other. For example, with an inaccurate kinematics model, reprojection error from a calibration procedure might be significantly higher. We have found that errors in kinematics calibration can lead to increased reprojection errors in camera calibration.
Fast Inference
Recent work in uncalibrated servoing has used neural networks. An advantage of these architectures is its speed, which allows for real-time servoing. In Table 3, we show the speeds of various learning and inference queries. The results are for a setup with 2 cameras, 12 features, and a 6 joint robot.
Table 3. Speed of queries
Compared to the other operations in our model, inferences of the joints from the image are significantly slower. This is because it is an optimization process that requires multiple evaluations of a function and its gradient.
While we do not see this as a limitation for real-time servoing, if an application required a high-frequency control signal, we would simply use an amortized inference technique. For instance, we can simply learn a neural network as a backward model. This backward model can be trained offline without further data capture since an arbitrary number of examples can be produced by the forward model we have already learned.
Training Procedure
Our model is trained in the following 3 stages given the initialization:
1. Learn camera parameters, structure parameters, and end-effector pose given the feature pixel locations. (200 iterations)
2. Learn kinematics parameters given joint states and end-effector pose (200 iterations with minibatch mode)
3. Learn all parameters given joint states and feature pixel locations (200 iterations with minibatch mode)
Using this procedure, training gives consistent converge to good solutions. In Table 4 we run a k-fold cross validation for different values of k. The dataset consists of 200 samples of joint states and corresponding image feature locations. We show consistently converge to a solution that generalizes well to test data.
Table 4. k-fold Cross Validation
Sample Efficiency
However though the model’s consistent convergence is important, we are ultimately interested in its performance in the the low-data regime. To evaluate this, we hold-out 100 samples and take smaller subsets of the remaining 100 samples for training. Table 5 shows the performance on test data for each size training set.
Table 5. Performance with few samples
We have found that our training performance correlates strongly with our test performance. Each data point in Figure 3 corresponds to a training period with 50 randomly selected training samples and 100 test samples. It shows that when training error converges to sub pixel values, the test error does as well.
Figure 3. Train vs. Test Pixel Error
Figure 4. Samples to learn new camera parameters
The modularity of our model enables us to swap out, add, and remove components easily. We discuss how this is useful for each of the classes of parameters in the model: cameras, structure, and kinematics.
Cameras
Users may want to modify the number and/or position of cameras in their setup. This might be needed when trying to do fine manipulation tasks in which having a camera close to the robot end-effector can improve accuracy. We show that we can relearn cameras and make them usable for guiding motions with very few iterations.
Figure 4 shows the pixel error on a test set as we increase the number of samples. The camera parameters are being learned from random initialization. While the learning does not converge given only 2 samples, it is already sufficiently accurate to begin servoing. The plot shows both the case where add a third camera and the case where we have two cameras and we move one of them.
In addition, our method does not depend on having multiple cameras. Our learning procedure is feasible with a single camera using the initialization described in Initialization by Structure from Motion. Since this method of computing an initialization is sensitive to the specific views that are chosen, we run our learning with many more restarts than are used for the two-camera setting. We compared the pixel errors on a test data set when training with a single camera. When we use two cameras to compute an initialization (using triangulation) and then learn using information from only a single camera, we get a pixel error of 0.541 (0.187). When we use only a single camera to compute to compute an initialization (using structure from motion), we get a pixel error of 1.231 (0.705). This is done over 10 trials and with data collection from the real robot. While the performance of the learning degrades when using only a single camera, it still allows for accurate positioning. In practice though, we use two cameras because it is more accurate and faster to train, since it requires less restarts of the optimization.
Inference in our model can also be done with a single camera. Table 6 compares the joint and reprojection errors when doing inference with two cameras vs. with only one, after training a model with two cameras.
Table 6. Single Camera Joint Inference Accuracy and Reprojection Error
Structure
An important use of robots is in performing manipulation tasks. While the above sections have assumed that the features we track are fixed to the robot arm, in practical use cases these features may shift. For example, if we grasp an object and are uncertain about its position in the gripper, we may want to use visual feedback to infer the new structure in order to begin accurately manipulating that object. In our model, adding new features, potentially from a new object, is simgs/traightforward and learning the parameters can be done in a sample efficient manner online. We demonstrate this by attaching new markers to the robot gripper and removing the previous markers. We show that within a few data samples, we can accurately position those new markers.
Figure 5 shows the reprojection error when we learn the missing structure parameters as a function of the number of samples. Again, the structure parameters are initialized randomly. With 2 samples, the model is very close to maximum precision. One way to explain this efficiency is to think that if we have two cameras properly learned in the model, the new features’ pixel locations can be triangulated to 3D. As we get more views, the effect of the noise from the triangulation reduces. Note that we do not explicitly do this triangulation, rather it is done implicitly through the optimization of the structure coordinates.
Kinematics
The kinematic parameters might change for a variety of reasons. For example, if the robot is not fixed to the ground,
Figure 5. Samples to learn new structure parameters
Figure 6. Samples to learn new base frame parameters
motions of the arm can cause the base of the robot to shift. In Figure 6, we show how the new base frame of the robot can be learned with very few samples.
The kinematic calibration of the arm could also change if we attach new grippers, force-torque sensors, or modify the arm. While we have not collected data where we modify the arm, we can get a sense of whether relearning the kinematics is possible by randomly re-initializing the kinematic parameters in our learned model and attempting to relearn them. Figure 7 shows the convergence of this learning. Compared to camera and structure parameters, kinematic parameters require significantly more samples to consistently converge.
The above sections show that learning in our model can be done in a sample efficient manner. In addition, after having properly learned the model, relearning or adapting parameters as they change can also be done quickly. This suggests an online learning formulation for our model.
Online learning can be done by maintaining a buffer of recorded observations and taking gradients on these samples
Figure 7. Samples to learn new robot kinematic parameters
to update the parameters. In theory, these gradients should be approximately zero if the setup has not changed and the model is already converged. However, due to noise in the sensor readings they may be nonzero, so we use a threshold on the gradients to ensure stability.
The above works when the changes to the parameters are small, for example when the in-hand object shifts or the camera intrinsics change. However, when there are large changes to the system, there may be a need for significant changes to the model parameters. In this situation, simply updating the parameters using gradients and still using the incorrect model for motion will be problematic. By doing inference in our model, we can detect these large changes to the system and modify the model to keep it usable.
For example, if a camera is shifted, Table 7 shows that the norm of the gradients will spike as the buffer fills up with observations from the newly configured setup.
Table 7. Gradient Norm when camera is shifted
After detecting this spike, we can identify the camera that is producing results inconsistent with what our model predicts. Then we ignore this camera until we accumulate sufficient samples to relearn its parameters. The previous section shows that very few samples are needed to do this.
Figure 8. Pixel error vs. number of iterations of servoing
Visual servoing is the technique of using visual feedback to control a robot. Most often, visual servoing tracks certain features in the images and controls the robot to optimize an objective defined on those features. This might be to match some target locations of those features or to orient them in a certain configuration. Visual servoing methods like IBVS estimate the image space Jacobian, which defines how changes to the joints will change the image, and the control law takes steps to maximize the objective function.
We compare our learned visual control to VISP, the standard implementation of IBVS, which uses the control law shown in eq. (1) for servoing. The robot Jacobian expressed in the end-effector frame and camera extrinsics calibration are given and the interaction matrix is estimated online. We must also provide the pixel and depth locations of the features as they are currently and as they are desired to be.
To compare with our model, we randomly select a target configuration of the arm and capture the features’ pixel coordinates. Then we move the arm elsewhere and allow both models to servo given only the features’ pixel locations at the target configuration. We record the pixel error at each step of the servoing. We repeat this procedure for 100 different target configurations. Figure 8 shows that our model outperforms VISP both by doing more accurate servoing and in significantly fewer iterations.
In Figure 9, we run the same evaluation but introduce noise into both the joint states and the actions sent to the controller. We add Gaussian noise with standard deviation 0.02. Our method is trained on data with noisy joint estimates. VISP is provided the Jacobian at the noisy joint state. Our method still outperforms VISP. Since our method is able to directly infer the joints, it is more resilient to the noisy joint states that are observed.
Calibration
VISP requires a calibrated robot and camera. Calibration of the robot kinematics often requires a precisely manufactured device with which a calibration routine is run. Calibration of the cameras requires a calibration checkerboard. Each of these procedures can have errors and the errors in the
Figure 9. Pixel error vs. number of iterations of servoing with noisy joint states and controller
kinematic calibration can lead to inaccurate calibration of the cameras. We have observed on the UR5 robot that small deviations from nominal kinematic parameters can result in an increase in camera reprojection errors of approximately 2 pixels. While our model does require data to be collected, it does not need any explicit calibration because the model parameters can be learned.
Cameras
VISP also requires a stereo camera setup and proper intrinsic calibration since we must triangulate the points to 3D in order to recover the distance of each feature from the camera origin. Our method does not require the two camera and can fit the intrinsic parameters.
Global
Since our method learns a full kinematics model, the structure of the object, and the camera projections, we have a global model. This means that we do not need to use a imagejoint Jacobian and rather, can directly compute a target joint configuration given an image. This allows us to make larger motions and reach the target location in significantly fewer servoing steps.
We use the our model for motion by inferring the joint states corresponding to the target location, given the target pixel locations of the features. We then infer the joint states given the current pixel locations and command the difference between these to the robot. In a perfect model, this should take a single step. However because of inaccuracies in the model, repeating this procedure will improve convergence.
Since we are directly computing the delta in joint space, there is no need to have a term that controls the step size taken using the image Jacobian. With our method, we compute a delta between our current and desired state, rather than using gradients. Therefore, we do not need to specify a step size. Our method has no hyperparameters to tune.
Incorporating visual feedback in the control loop is necessary for accurately controlling noisy robots. In this section we consider two settings of controlling the robot through a noisy controller (one that inaccurately executes the desired action). In the first, the joints are observed but there is noise in the reading. In the second, we don’t observe the joints/cartesian pose at all. This is the most practically interesting setting because it shows that by only commanding the robot and observing it visually, we can learn to accurately control the robot.
Joints Observed
We first show that if we do not account for the noise in the state estimates the learned model will be inaccurate. Table 8 compares the errors of models that do and do not learn corrections to the noisy joint state readings. The models that account for noise consistently outperform those that do not. The parameter is selected with a validation set. We train on noisy data and use noiseless data at test time to evaluate the accuracy of the model.
Table 8. Error when learning accounting for noise
While 8 shows the results for noisy joint states, the same trend is observed when we get a noisy measurement of the Cartesian pose of the end-effector and the learning is done as shown in Eq. (9).
State Unobserved
When the state is unobserved, the only observed information is the actions we send to the controller and the images. Since the actions are not necessarily executed accurately, by composing them together we get an estimate of the state that increases in variance over time. This is different than the above section (noisy observed state) in which the variance of the noise is the same at each time step. We demonstrate that we are still able to learn and then control the robot.
In Figure 10, we show the pixel error as a function of the number of servoing steps when operating a Cartesian controller with noise. Noise is simulated by adding Gaussian noise to the Euler coordinates of the action, which is a 6D transformation. Our model is trained by sending random actions to the noisy Cartesian controller and capturing images. We use 50 samples for learning. As the noise in the controller increases, the accuracy and speed of convergence decreases. However we are still able to position with pixel accuracy when the noise has a standard deviation 0.01 meters in translation and 0.01 radians in roll,pitch, and yaw. This becomes approximately 5 pixel accuracy when the noise has a standard deviation of 0.02 (meters and radians).
Figure 10. Pixel error vs. number of servoing iterations when operating a noisy Cartesian controller
Figure 11. Pixel error vs. number of servoing iterations when operating a noisy joint controller
imgs/In Figure 11, we show the pixel error as a function of the number of servoing steps when operating a joint controller with noise. Noise is simulated by adding Gaussian noise to the joint deltas sent to robot. Our model is trained by sending random actions to the noisy joint controller and capturing images. We use 50 samples for learning. Even with the standard deviation of noise at 0.01 radians and 0.02 radians, we can still converge with pixel accuracy.
We demonstrate our visual servoing method by executing grasping and tight-fit insertion motions on a Baxter robot. The Baxter robot uses series elastic actuators (SEAs) in their joints, which makes control inaccurate. We learn the model by moving to 50 random joint configurations.
These demonstrations can be produced using any of the learning methods we have described in this paper.
Grasping
In order to learn to grasp a new object, we must first learn its structure. To do this we place the object in the robot’s gripper and collect 5 samples, which is sufficient to learn the object’s structure if there is sufficient variety of views. Even
Figure 12. Grasping
if the structure is not entirely accurate, by running online learning we will eventually converge to the correct structure. After learning, we should be able to grasp that object located anywhere in view of a camera.
To perform the grasp, we compute the joint states corresponding to the object being inside the gripper. Since we learned the structure parameters with the object in the gripper, we can do this by considering only the features on the object and inferring the corresponding joint states.
Then given this target state we can iteratively converge to that target state. We do this by using only the features on the arm to infer the current joint states and then sending the delta between the current and target joint states.
Figure 13. Tight-fit Insertion
However, moving directly to the grasping pose might cause the gripper to collide with the object. Instead we may want to approach the object from above. We do this by modifying the learned coordinates of the structure. We stretch them, increasing the distance between the object features and arm features. As we incrementally reduce this distance back to its original distance, doing inference of the joint states at each step, the gripper will move down to grip the object.
This procedure can allow for grasping with very few motions. For example we have found that grasping can be done consistently by taking 4 attempts to move to a pose computed after stretching the structure by a factor of 1.4.
And then a single motion to stretch factors of 1.3, 1.2, 1.1, and finally 1.0. Figure 12 shows the steps of executing a successful grasp.
Insertion
Now once we have successfully grasped the object, we execute a tight-fit insertion. A high-precision insertion will need to be done visually since small errors in the pose estimation can cause the insertion to fail.
First we need to learn the structure of the insertion target. As shown in Figure 13, we mark the insertion target using two markers that signify the edges of the target location. Once we learn this, we can place that target anywhere in view of the image (or move the cameras and leave the target fixed) and we will be able to properly identify the target location.
Additionally, since the object may have been grasped differently than how we originally learned, we can relearn the structure of the in-hand object. Again this can be done with only 5 samples.
Then to do the insertion, we infer the target joint states corresponding to the target pixel locations of the object features (at the insertion target). Then we infer our current state by using the arm features. We command the delta between the current and target. As is done for grasping, to gradually approach the insertion target we can gradually scale the structure features. Figure 13 shows the steps of executing a successful insertion.
In this work, we presented a generative, model-based approach of learning to control a robot using visual feedback. Our insight is that we can avoid calibration of the true, physical kinematic and camera parameters and instead just directly learn a model to generate feature pixel coordinates from joint states and actions. With our training procedure, we show that it is feasible to do so with no prior information about the system. Training the model is done sample-efficiently, with as little as 50 observations, and shows strong generalization to test data sets. The model explicitly handles uncertainty of the observations, which allows us to control robots that provide noisy measurements of the joint states or Cartesian pose. Further, the learning is feasible even when the robot state is not observed, only the actions that we command to a noisy controller. Our modular formulation enables us to flexibly add and relearn components. We showed that we can quickly learn to use new cameras and understand the structure of new objects to manipulate them. Through online learning, our model is robust to changes in the system since it can quickly adapt its parameters. Inference in the model enables us to infer the robot’s state given target coordinates for the features in the image. We demonstrated that our method allows matching target coordinates of the features in significantly fewer iterations than state-of-the-art methods in visual servoing. We concluded with demonstrations of grasping and insertion behaviors on a robot with a noisy controller.
We plan to release an implementation of our method to enable researchers to use and extend our system and build useful applications with it. Our method can be used in place of or as a sub-module within neural network architectures that attempt to learn control of a robot, which will provide them benefits in terms of sample-efficiency, speed, and accuracy. We are excited about the future research directions, particularly in manipulation and control, that our work lays the foundation for.
Arulkumaran K, Deisenroth MP, Brundage M and Bharath AA (2017) Deep reinforcement learning: A brief survey. IEEE Signal Processing Magazine 34(6): 26–38.
Arun KS, Huang TS and Blostein SD (1987) Least-squares fitting of two 3-d point sets. IEEE Transactions on pattern analysis and machine intelligence (5): 698–700.
Atkeson CG (1989) Learning arm kinematics and dynamics. Annual review of neuroscience 12(1): 157–183.
Attinger A, Wang B and Keller GB (2017) Visuomotor coupling shapes the functional development of mouse visual cortex. Cell 169(7): 1291–1302.
Beeson P and Ames B (2015) Trac-ik: An open-source library for improved solving of generic inverse kinematics. In: 2015 IEEE-RAS 15th International Conference on Humanoid Robots (Humanoids). IEEE, pp. 928–935.
Bradski G and Kaehler A (2000) Opencv. Dr. Dobbs journal of software tools 3.
D’Souza A, Vijayakumar S and Schaal S (2001) Learning inverse kinematics. In: Proceedings 2001 IEEE/RSJ International Conference on Intelligent Robots and Systems. Expanding the Societal Role of Robotics in the the Next Millennium (Cat. No. 01CH37180), volume 1. IEEE, pp. 298–303.
Faugeras OD, Luong QT and Maybank SJ (1992) Camera self- calibration: Theory and experiments. In: European conference on computer vision. Springer, pp. 321–334.
Finn C and Levine S (2017) Deep visual foresight for planning robot motion. In: 2017 IEEE International Conference on Robotics and Automation (ICRA). IEEE, pp. 2786–2793.
Fraser CS (1997) Digital camera self-calibration. ISPRS Journal of Photogrammetry and Remote sensing 52(4): 149–159.
Hartenberg R and Danavit J (1964) Kinematic synthesis of linkages. New York: McGraw-Hill.
Hemayed EE (2003) A survey of camera self-calibration. In: Proceedings of the IEEE Conference on Advanced Video and Signal Based Surveillance, 2003. IEEE, pp. 351–357.
Hollerbach JM and Wampler CW (1996) The calibration index and taxonomy for robot kinematic calibration methods. The international journal of robotics research 15(6): 573–591.
Hosoda K and Asada M (1994) Versatile visual servoing without knowledge of true jacobian. In: Proceedings of IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS’94), volume 1. IEEE, pp. 186–193.
Hosoda K, Igarashi K and Asada M (1998) Adaptive hybrid control for visual and force servoing in an unknown environment. IEEE Robotics & Automation Magazine 5(4): 39–43.
Ikits M and Hollerbach JM (1997) Kinematic calibration using a plane constraint. In: Proceedings of International Conference on Robotics and Automation, volume 4. IEEE, pp. 3191–3196.
Kragic D and Christensen HI (2002) Survey on visual servoing for manipulation. Computational Vision and Active Perception Laboratory, Fiskartorpsv 15: 2002.
Lenz RK and Tsai RY (1989) Calibrating a cartesian robot with eye- on-hand configuration independent of eye-to-hand relationship. IEEE Transactions on Pattern Analysis & Machine Intelligence (9): 916–928.
Lepetit V, Moreno-Noguer F and Fua P (2009) Epnp: An accurate o (n) solution to the pnp problem. International journal of computer vision 81(2): 155.
Levine S, Finn C, Darrell T and Abbeel P (2016) End-to-end training of deep visuomotor policies. The Journal of Machine Learning Research 17(1): 1334–1373.
Levine S, Pastor P, Krizhevsky A, Ibarz J and Quillen D (2018) Learning hand-eye coordination for robotic grasping with deep learning and large-scale data collection. The International Journal of Robotics Research 37(4-5): 421–436.
Lillicrap TP, Hunt JJ, Pritzel A, Heess N, Erez T, Tassa Y, Silver D and Wierstra D (2015) Continuous control with deep reinforcement learning. arXiv preprint arXiv:1509.02971 .
Liu DC and Nocedal J (1989) On the limited memory bfgs method for large scale optimization. Mathematical programming 45(1-3): 503–528.
Liu YH, Wang H, Wang C and Lam KK (2006) Uncalibrated visual servoing of robots using a depth-independent interaction matrix. IEEE Transactions on Robotics 22(4): 804–817.
Malis E (2004) Visual servoing invariant to changes in camera- intrinsic parameters. IEEE Transactions on Robotics and Automation 20(1): 72–81.
Marchand ´E, Spindler F and Chaumette F (2005) Visp for visual servoing: a generic software platform with a wide class of robot control skills. IEEE Robotics & Automation Magazine 12(4): 40–52.
Nist´er D (2004) An efficient solution to the five-point relative pose problem. IEEE transactions on pattern analysis and machine intelligence 26(6): 0756–777.
Paszke A, Gross S, Chintala S, Chanan G, Yang E, DeVito Z, Lin Z, Desmaison A, Antiga L and Lerer A (2017) Automatic differentiation in pytorch .
Piepmeier JA, McMurray GV and Lipkin H (2004) Uncalibrated dynamic visual servoing. IEEE Transactions on Robotics and Automation 20(1): 143–147.
Puskorius G and Feldkamp L (1987) Global calibration of a robot/vision system. In: Proceedings. 1987 IEEE International Conference on Robotics and Automation, volume 4. IEEE, pp. 190–195.
Quigley M, Conley K, Gerkey B, Faust J, Foote T, Leibs J, Wheeler R and Ng AY (2009) Ros: an open-source robot operating system. In: ICRA workshop on open source software, volume 3. Kobe, Japan, p. 5.
Renders JM, Rossignol E, Becquet M and Hanus R (1991) Kinematic calibration and geometrical parameter identification for robots. IEEE Transactions on robotics and automation 7(6): 721–732.
Rolf M, Steil JJ and Gienger M (2010) Goal babbling permits direct learning of inverse kinematics. IEEE Transactions on Autonomous Mental Development 2(3): 216–229.
Schonberger JL and Frahm JM (2016) Structure-from-motion revisited. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. pp. 4104–4113.
Shademan A, Farahmand AM and J¨agersand M (2010) Robust jacobian estimation for uncalibrated visual servoing. In: 2010
IEEE International Conference on Robotics and Automation. IEEE, pp. 5564–5569.
Tsai RY and Lenz R (1980) Review of the two-stage camera calibration technique plus some new implementation tips and some new techniques for center and scale calibration. In: Optical Society of America, Topical Meeting on Machine Vision.
Tsai RY and Lenz RK (1989) A new technique for fully autonomous and efficient 3d robotics hand/eye calibration. IEEE Transactions on robotics and automation 5(3): 345–358.
Yoshimi BH and Allen PK (1994) Active, uncalibrated visual servoing. In: Proceedings of the 1994 IEEE International Conference on Robotics and Automation. IEEE, pp. 156–161.
Zhang Z (2000) A flexible new technique for camera calibration. IEEE Transactions on pattern analysis and machine intelligence 22.
Zhuang H, Wang K and Roth ZS (1995) Simultaneous calibration of a robot and a hand-mounted camera. IEEE Transactions on Robotics and Automation 11(5): 649–660.