Alright, I’ve performed all of the steps of the home service challenge tutorial, which means that I can now run the demo remote launch file with my own map (created using the SLAM tutorial steps). Now, there are multiple things that I would like to change, but after digging and searching through the code, I’m a bit lost on how to achieve what I want.
With the stock home service challenge, the Turtlebot will search for the first AR tag (using coördinates and the camera, I guess?), navigate to this object, grab this object and move the object from this location to another one (which is also found with coördinates and the camera, I guess?), releasing the object and then move back to the starting position. These steps will then be repeated for the other three objects.
What I want to achieve is the following:
- Have the Turtlebot wait at the starting position
- If my Python script reads a certain value from a server, the Turtlebot should move to AR tag 0 (where an object is located), fine-tune its position (I believe this is already implemented in the home service challenge) and give some feedback that the Python script can read/receive
- Once the position has been fine-tuned, the Turtlebot should wait at the location and give some sort of feedback, so that my Python script can update a value on the server
- When, during the waiting, my Python script reads another certain value from the server, the Turtlebot should actually grab the object and move to AR tag 1 (where the object has to be released). Again, as soon as the Turtlebot starts moving to the next position, some feedback should be given so that the Python script can update a value on the server.
- Once the Turtlebot has arrived at AR tag 1, it should position itself in front of it (just like with AR tag 0) and release the object. After releasing the object, the Turtlebot should move to the starting position. Here again, as soon as the Turtlebot starts moving to the starting position, I’d like some feedback that the Python script can read/use.
- Once arrived at the starting position, I want the Turtlebot to wait again for a signal from my Python script to repeat the steps above. Furthermore, once the Turtlebot arrives at the starting position, I want again a signal that the Python script can read.
Note that with my assignment, I’m only interested in moving one object from point A (AR tag 0) to point B (AR tag 1). With this plan in mind, there are several things I need to do. However, as I mentioned before, I’m a bit lost on how to solve it. So here’s what I need to change in the home service challenge and the issues that I face:
- All actions should be seperated, instead of one mission that performs all the tasks consecutively.
I think I can do this by simply splitting the scenario.yaml file into seperate scenario.yaml files, but I’m not sure if this is correct and (if so) how I can then activate the seperate steps (as listed above). My Python script that reads the server values, will need to publish the ROS commands, but they will have to be seperate commands for each step.
- I need to update the position of the AR tags in the room.yaml file, but the coördinate system doesn’t make any sense to me, so I have no clue on how to adapt the values to my own map.
- I need to change the different position of the OpenMANIPULATOR-X, which I can find in the config.yaml file, but I’m not sure how these positions are linked to the ROS commands that I publish. How does this work
- As mentioned in the steps above, I will need to receive feedback from ROS when a certain task starts or has been completed. How do I do this, so that my Python script can read this feedback?
These are the main problems I have. If someone could help me to get started, that would be great! And if Python is not the way to go for the automation method (because that’s pretty much what it does, it reads server values and based on these, it commands the Turtlebot to perform certain tasks), then please let me know what would work too.
The setup that I’m using consists of:
- Turtlebot3 Waffle Pi with the Raspberry Pi 3B+ running Rasbian with ROS 1 Kinetic
- Remote PC is Ubuntu 16.04 on a VM that also has ROS 1 Kinetic installed
- All the packages required for Turtlebot3, OpenMANIPULATOR-X and the Home Service Challenge have been installed
- The server that I’m communicating with uses a MySQL database, so whatever automation script I will use (currently Pyton), will need to support communication with this database.
- The Python script is running on the Remote PC
I hope I’ve given enough information for somebody to guide me. Every bit of help is appreciated, as I am a bit lost