Skip to content

Repository with an example use case of a robot navigating in a graph-like environment

License

Notifications You must be signed in to change notification settings

kas-lab/navigation_graph_map

Repository files navigation

Graph-like navigation

Repository with an example use case of a robot navigating in a graph-like environment.

Based on the use case from Software architecture and task plan co-adaptation for mobile service robots and adapted to the RoboCup@Home scenario.

Install

This step is only needed if you want to make changes to the project, if you just want to run it skip to Running

mkdir -p ~/navigation_ws/src
cd ~/navigation_ws/src
git clone https://github.com/kas-lab/navigation_graph_map.git

Docker setup

This step is only needed if you want to make changes to the project, if you just want to run it skip to Running

cd ~/navigation_ws/src/navigation_graph_map/
docker build -t navigation .

Running

Simulation

Start docker container:

docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro ghcr.io/kas-lab/navigation_graph_map:main

Then run:

ros2 launch navigation_simulation simulation.launch.py

Troubleshoot: The first time you start the simulation, gazebo downloads some stuff from the internet so it might take a while for it to start. Sometimes, it doesn't work on the first run. In that case, stop the launch (ctrl + c) but keep the container running, then start the simulation again.

Planning

In another terminal:

docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro ghcr.io/kas-lab/navigation_graph_map:main
ros2 launch navigation_task_plan navigate_task_plan.launch.py

ROSA

In another terminal:

docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro ghcr.io/kas-lab/navigation_graph_map:main

Start typedb server

typedb server &

In the same terminal launch rosa:

ros2 launch navigation_rosa navigation_rosa.launch.py

Trigger adaptation

In another terminal:

docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro ghcr.io/kas-lab/navigation_graph_map:main

Publish battery level:

ros2 topic pub /diagnostics diagnostic_msgs/msg/DiagnosticArray {status:['{message: "QA status", values:[{key: battery, value: 0.5}]}']}

Check adaptation

ros2 param get /controller_server FollowPath.max_vel_x
ros2 param get /controller_server FollowPath.max_vel_theta

Query example

ROSA query:

ros2 service call /rosa_kb/query ros_typedb_msgs/srv/Query "{query_type: 'fetch', query: 'match \$b isa QualityAttribute, has attribute-name \"battery\"; fetch \$b:attribute;'}"

Navigation kb query:

ros2 service call /ros_typedb/query ros_typedb_msgs/srv/Query "{query_type: 'fetch', query: 'match
\$o isa object, has object-name \"cup\";
(object:\$o, room:\$r) isa delivery-location;
\$rg isa room, has room-name \"garage\";
\$path (room:\$rg, room:\$r) isa path;
\$pose (physical_thing:\$r) isa pose2d;
fetch
\$pose:x, y, theta;'}"

About

Repository with an example use case of a robot navigating in a graph-like environment

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages