... | ... | @@ -21,7 +21,7 @@ Here is some documentation: |
|
|
* `p` the destination
|
|
|
* `heading` the heading the robot must be facing at the end
|
|
|
* `maximum-speed` the maximum speed that the robot need to drive
|
|
|
* `explore` drives the robot in a spiral around the current location of the robot
|
|
|
* `explore` drives the robot to random location near the current location of the robot, according to the following parameters:
|
|
|
* `radius` the radius around the start location used to generate new location. The start location is the position of the robot when the explore starts.
|
|
|
* `count` the number of random location visit
|
|
|
|
... | ... | @@ -46,7 +46,7 @@ ros2 run air_tst tst_editor explore_record_semantic.json |
|
|
|
|
|
TST are defined using the JSON file format.
|
|
|
|
|
|
Bellow is an example, for an exploration mission, in which the robot first move to the location $`(10,2)`$ and then explore in a spiral of radius $`10`$ while recording some data:
|
|
|
Bellow is an example, for an exploration mission, in which the robot first move to the location $`(10,2)`$ and then explore 8 locations in a radius $`10`$ while recording some data:
|
|
|
|
|
|
```json
|
|
|
{
|
... | ... | @@ -68,7 +68,8 @@ Bellow is an example, for an exploration mission, in which the robot first move |
|
|
{
|
|
|
"name": "explore",
|
|
|
"params": {
|
|
|
"radius": 0
|
|
|
"radius": 10,
|
|
|
"count": 8
|
|
|
}
|
|
|
},
|
|
|
{
|
... | ... | @@ -645,8 +646,8 @@ roscd air_tsts/tsts |
|
|
* `drive_to.json`: go to three positions in sequence
|
|
|
* `drive_to_repeat.json`: go to three positions in sequence and repeat once
|
|
|
* `drive_home.json`: go to near the home position and dock
|
|
|
* `explore.json`: execute the spiral motion
|
|
|
* `drive_to_explore.json`: go to a start position and execute the spiral motion
|
|
|
* `explore.json`: execute random exploration motion
|
|
|
* `drive_to_explore.json`: go to a start position and execute the random exploration
|
|
|
|
|
|
## Implementation of Executors
|
|
|
|
... | ... | @@ -689,11 +690,7 @@ Heading is equivalent to Yaw. But it needs to be specify as a quaternion, you ca |
|
|
(x=0, y=0,z=sin(yaw/2),q=cos(yaw/2))
|
|
|
```
|
|
|
|
|
|
**Explore** sample the Archimedean spiral. You can increment $`\theta`$ by $`\pi/4`$ to generate the waypoints until $`r`$ is superior to the $`radius`$ given as argument.
|
|
|
|
|
|
- we advise that you do a first implementation without taking into account when the robot get stuck and starting the spiral from the origin, but:
|
|
|
- you need to handle when the robot get stuck (you can re-use the solution from lab2)
|
|
|
- you need to make sure the robot start the spiral at hits current location, you can listen to the '/odom' topic. You can send the first goal from the callback.
|
|
|
**Explore** random exploration. This should be very similar to `Lab2` `RandomExploration`.
|
|
|
|
|
|
## Demonstration
|
|
|
|
... | ... | |