{"id":25399150,"url":"https://github.com/khaledgabr77/jordan_workshop","last_synced_at":"2026-02-22T21:36:09.738Z","repository":{"id":276948287,"uuid":"916081419","full_name":"khaledgabr77/jordan_workshop","owner":"khaledgabr77","description":"Mobile Industrial Robots \u0026 ROS 2 Workshop – Al-Hussein Technical University, Jordan.","archived":false,"fork":false,"pushed_at":"2025-02-11T17:04:48.000Z","size":15686,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T19:51:06.666Z","etag":null,"topics":["actions","amcl","gazebosim","mcl","message","navigation2","nodes","parameters","ros2-jazzy","sdf","services","slam","tf2","topics","urdf"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/khaledgabr77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-13T12:25:21.000Z","updated_at":"2025-03-16T13:34:59.000Z","dependencies_parsed_at":"2025-02-11T10:41:03.712Z","dependency_job_id":null,"html_url":"https://github.com/khaledgabr77/jordan_workshop","commit_stats":null,"previous_names":["khaledgabr77/jordan_workshop"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/khaledgabr77/jordan_workshop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaledgabr77%2Fjordan_workshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaledgabr77%2Fjordan_workshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaledgabr77%2Fjordan_workshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaledgabr77%2Fjordan_workshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khaledgabr77","download_url":"https://codeload.github.com/khaledgabr77/jordan_workshop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaledgabr77%2Fjordan_workshop/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268378965,"owners_count":24240907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions","amcl","gazebosim","mcl","message","navigation2","nodes","parameters","ros2-jazzy","sdf","services","slam","tf2","topics","urdf"],"created_at":"2025-02-15T23:29:18.926Z","updated_at":"2026-02-22T21:36:04.712Z","avatar_url":"https://github.com/khaledgabr77.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jordan Workshop\n\nThis guide walks you through setting up, installing, and running the packages in this workspace.\n\n## Prerequisites\n\n- **Ubuntu 22.04 or 24.04**\n- **ROS 2 Jazzy or Humble**\n- **Gazebo Sim Ionic or Harmonic**\n\n### Install ROS 2 Jazzy\n\n```bash\ncd jordan_workshop/scripts\n./install_ros2_jazzy.sh\n```\n\n### Install Gazebo Sim Harmonic\n\n```bash\ncd jordan_workshop/scripts\n./install_gazebo_sim_harmonic.sh\n```\n\n## Automated Workspace Setup\n\nTo automatically set up the workspace and install all required dependencies, run:\n\n```bash\ncd jordan_workshop/scripts\n./setup.sh\n```\n\n## Manual Setup Instructions\n\n### 1. Clone the Repository\n\nClone the repository from GitHub:\n\n```bash\ngit clone https://github.com/khaledgabr77/jordan_workshop\n```\n\n### 2. Build the Workspace\n\nNavigate to the workspace and build the project:\n\n```bash\ncolcon build\nsource install/setup.bash\n```\n\n### 3. Set Environment Variables\n\nSet the necessary environment variable so that Gazebo (Ignition/GZ) can locate the simulation resources:\n\n```bash\nexport GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:~/jordan_workshop/src\n```\n\n\u003e **Note**: Replace `~/jordan_workshop/src` with the absolute path to the `src` directory of your workspace if it's located elsewhere.\n\n---\n\n## Package Usage\n\nBelow are instructions for launching simulations and running various ROS 2 nodes in this workspace.\n\n### 1. Launching the Petra Robot Simulation\n\nThere are multiple launch files available, each providing different configurations for the Petra Robot:\n\n1. **SDF Simulation**:\n    ```bash\n    ros2 launch petra_robot petra_sim.launch.py\n    ```\n\n2. **URDF Simulation**:\n    ```bash\n    ros2 launch petra_robot petra_urdf.launch.py\n    ```\n    \u003e *Note:* There are several URDF launch files available in the `petra_robot` package, such as `petra_urdf_v1.launch.py`, `petra_urdf_v3.launch.py`, and so on. Each file provides a different robot configuration.\n\n3. **SLAM Simulation**:\n    ```bash\n    ros2 launch petra_robot mapping.launch.py\n    ```\n\n4. **Localization Simulation**:\n    ```bash\n    ros2 launch petra_robot localization.launch.py\n    ```\n\n5. **Navigation Simulation**:\n    ```bash\n    ros2 launch petra_robot navigation.launch.py\n    ```\n\n---\n\n### 2. Running the Publisher and Subscriber Nodes\n\nUse the following commands to run publisher and subscriber nodes from the **C++** and **Python** pub/sub packages:\n\n- **C++** (`cpp_pub_sub_pkg`):\n    ```bash\n    ros2 run cpp_pub_sub_pkg publisher_hello_ros\n    ros2 run cpp_pub_sub_pkg subscriber_hello_ros\n    ```\n\n- **Python** (`py_pub_sub_pkg`):\n    ```bash\n    ros2 run py_pub_sub_pkg publisher_hello_ros\n    ros2 run py_pub_sub_pkg subscriber_hello_ros\n    ```\n\n---\n\n### 3. Running the Client and Server Services\n\nThe `py_service_pkg` package includes a client and server:\n\n```bash\nros2 run py_service_pkg py_service_server\nros2 run py_service_pkg py_service_client\n```\n\n\u003e **Note:** The `cpp_interface_pkg` contains the custom service definition (`srv` message) used by the service nodes.\n\n---\n\n### 4. Running Launch Files\n\nSeveral launch files are provided to simplify running multiple nodes simultaneously or to configure simulations.\n\n1. **C++ Publisher/Subscriber**:\n   ```bash\n   ros2 launch cpp_pub_sub_pkg cpp_pub_sub.launch.py\n   ```\n\n2. **Turtlesim Launch (C++)**:\n   ```bash\n   ros2 launch cpp_launch_pkg cpp_launch_file.launch.py\n   ```\n\n3. **Turtlesim Launch (Python)**:\n   ```bash\n   ros2 launch py_launch_pkg my_first_launch_file.launch.py\n   ```\n\n4. **Turtlesim Remapping**:\n   ```bash\n   ros2 launch py_launch_pkg remapping_turtle.launch.py\n   ```\n\n---\n\n### 5. Running Parameter Nodes\n\nTo run Python nodes that use parameters (in the `py_parameters_pkg`):\n\n1. **Parameter Nodes**:\n   ```bash\n   ros2 run py_parameters_pkg my_parameter\n   ros2 run py_parameters_pkg py_param\n   ```\n\n2. **Launch File with Parameters**:\n   ```bash\n   ros2 launch py_parameters_pkg publisher_param.launch.py\n   ```\n\n---\n\n### 6. Running TF2 Nodes\n\nTo work with TF2 (transforms) using `py_tf2_pkg`:\n\n1. **Static Broadcaster**:\n   ```bash\n   ros2 run py_tf2_pkg static_broadcaster.py\n   ```\n\n2. **Static Listener**:\n   ```bash\n   ros2 run py_tf2_pkg tf_listener.py\n   ```\n\n3. **Dynamic Broadcaster**:\n   ```bash\n   ros2 run py_tf2_pkg dynamic_transform_broadcaster.py\n   ```\n\n4. **Pose Estimation** (turtle2 w.r.t. turtle1):\n   ```bash\n   ros2 run py_tf2_pkg turtle_tf2_pose.py\n   ```\n\n5. **Turtle Follower**:\n   ```bash\n   ros2 run py_tf2_pkg turtle_tf2_follower.py\n   ```\n\n---\n\n### 7. Running the Mogi Trajectory Server\n\nTo start the Mogi Trajectory Server:\n\n```bash\nros2 run mogi_trajectory_server mogi_trajectory_server\n```\n\n---\n\n### 8. Running the Yahboomcar Simulation\n\nTo launch the Yahboomcar simulation in `yahboomcar_description`:\n\n```bash\nros2 launch yahboomcar_description robot_sim.launch.py\n```\n\n---\n\n## Additional Information\n\n- Ensure all dependencies are installed correctly before running any simulations.\n- For questions, contributions, or further details, visit the [GitHub repository](https://github.com/khaledgabr77/jordan_workshop).\n\n---\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n## Contact\n\nFor questions or suggestions, please open a GitHub Issue or reach out via email at **khaledgabr77@gmail.com**.\n\n---\n\n*Happy Coding and Simulating!*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhaledgabr77%2Fjordan_workshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhaledgabr77%2Fjordan_workshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhaledgabr77%2Fjordan_workshop/lists"}