SRC2 Rover |
This is the third in a series of post about my involvement with the qualifying round of the NASA Space Robotics Challenge - Phase 2 (SRC2). The first post introduced the basics of the competition. One aspect of the challenge is there is no controller for the rover depicted to the right. It uses Explicit Four Wheel Steering which allows the orientation of the wheels to be independently changed. This provides multiple ways for the rover to move, e.g. straight, crab, turn, pivot.
The second post explored the geometry on positioning the wheels for a turn. This post will address pivoting in place and crab movement, i.e. moving sideways. It also addresses the trivial crab case of moving straight forward or back.
Pivoting
Pivoting is changing the orientation of the rover without changing the location. The diagram below demonstrates the wheel orientation for pivoting. In the diagram note the orientation of the axis, which is ROS standard for robots. Also, the ROS standard for rotation is counterclockwise, i.e. the direction shown in the diagram.
Explicit Steering - Rover Pivoting |
Term | Description |
ICR | Instantaneous Center of Rotation |
Rr | Radius from ICR to center of rover |
Ri, Ro | Radius of rover's inner (i) and outer (o) sides through ICR |
Wb, Wt | Wheel base and wheel track of rover. Lengths are representative of actual size. |
WRi, WRo | Radius of inner(i) and outer (o) wheels |
δi, δo | Steering angle for inner (i) and outer (o) wheels |
The equations from the previous article are the basis for calculating the wheel steering angles. These simplify because the Instantaneous Center of Rotation (ICR) is at the center of the rover, i.e. where the diagonal lines cross.
In the equations, Rr becomes zero leaving Ro and Ri as ±Mt/2. The calculation of the actual angle simply become the arc tangent of the sides as in the next equation. Then it is just a matter of getting the signs for the angles sorted out.
Since the size of the rover is constant it is possible to calculate the pivot angles during compilation to avoid run time calculation.
Crab and Straight Movement
The steering orientation for all wheels is the same in a crab movement as shown in the diagram. Clearly for moving straight the steering angle is zero.
Explicit Steering - Rover Crab Movement |
The angle is determined by the speed or effort in the X and Y directions. Again the arc tangent of these values provides the angle.
A conscious decision was made, for two reasons, not to investigate turning while doing a crab movement. First, it would mean each wheel would have a unique orientation. Bluntly, the complications in determining those orientations and the speeds of those wheels (covered in a later post) was off-putting.
The second reason is more pragmatic. The SRC2 rover can only sense obstacles in front of the rover. Moving to the side in a crab movement risks collisions with obstacles unless over means can assure a clear path. While some circumstances may require and allow a simple crab movement doing a turn at the same time seems imprudent.
Caveats
Implementing these calculation requires careful checking on how the programming language implements the arc tangent function. Some languages provide an arctan2(m, n) form which provides the quadrant of the angle usually through a signed output. The order of the arguments determines the quadrant. The expected ordering varies among languages.
This wraps up the first three articles on determining the steering angles for the wheels.
No comments:
Post a Comment